Text-based Desktop Environment

April 24, 2026 ยท View on GitHub

Command-line options

Syntax

vtm [ -c <file> ][ -q ][ -p <id> ][ -s | -d | -m ][ -x <cmds> ]
vtm [ -c <file> ][ -q ][ -t | -g ][ -r [ <type> ]][ <args...> ]
vtm [ -c <file> ]  -l
vtm -i | -u | -a [mode] | -v | -?

<script relay via piped redirection> | vtm [ -p <id> ]

Without options, vtm runs Desktop Client, running an additional instance with Desktop Server in background if it is not running.

OptionDescription
-h, -?, --helpPrint command-line options.
-v, --versionPrint version.
-l, --listconfigPrint configuration.
-t, --tuiForce TUI mode.
-g, --guiForce GUI mode.
-i, --installPerform system-wide installation. Allow Desktop Server to run in user context in Session 0 on Windows.
Placing Desktop Server in Session 0 allows console applications to run independently of the user's GUI login session. Note: This prevents GUI applications from running from the vtm desktop environment. See "Session 0 Isolation" on the Web for details.
Elevated privileges required.
-u, --uninstallPerform system-wide deinstallation.
Elevated privileges required.
-0, --session0Use Session 0 to run Desktop Server in background. For Windows only.
-a, --mouse [mode]Set/reset persistent access to mouse devices for all users on Linux platform (excluding Android).
Run sudo vtm --mouse 0 to reset access.
Elevated privileges required.
-q, --quietDisable logging.
-x, --script <cmds>Specifies script commands to be run by the desktop when ready.
-c, --config <file>Specifies a settings file to load or plain xml-data to merge.
-p, --pin <id>Specifies the desktop id it will be pinned to.
-s, --serverRun Desktop Server.
-d, --daemonRun Desktop Server in background.
-m, --monitorRun Log Monitor.
-r, --, --runRun desktop applet standalone.
<type>Desktop applet to run.
<args...>Desktop applet arguments.
--env <var=val>Set environment variable.
--cwd <path>Set current working directory.
--fonts [v[erbose]]Print available fonts (with horizontal scrolling).

Inline configuration

The plain xml-data could be specified in place of <file> in --config <file> option:

  • command-line:
    vtm -c "<config><terminal><scrollback size=1000000/></terminal></config>" -r term
    
    or (using compact syntax)
  • command-line:
    vtm -c "<config/terminal/scrollback size=1000000/>" -r term
    

Linux VGA Console (in-kernel console)

In order to use a mouse or touchpad in Linux VGA Console, you must grant the user access to mouse/pointing devices. By default, only privileged users and users of the input group have access. To grant all users permanent access to all pointing devices, use the command:

  • sudo vtm --mouse
    

To reset permanent access, use the command:

  • sudo vtm --mouse 0
    

Desktop Applets

AppletTypeArguments
Teletype Console (default)vttyCUI application with arguments to run
Terminal ConsoletermCUI application with arguments to run
DirectVT GatewaydtvtDirectVT-aware application to run
DirectVT Gateway with TTYdttyCUI application to run, forwarding DirectVT I/O

The following commands have a short form:

  • vtm -r vtty <cui_app...> can be shortened to vtm <cui_app...>.
  • vtm -r dtty ssh <user@host dtvt_app...> can be shortened to vtm ssh <user@host dtvt_app...>.

Scripting

28 Feb 2025: This functionality is under development.

Script CommandDescription
vtm.desktop.Run([{ <attr_list...> }])Create and run a menu item constructed using a comma-separated list of <attribute>=<value> (derived from existing or updated temporary item).
Create and run temporary menu item constructed using default attributes if no <attr_list...> specified.
See Settings/Taskbar menu item attributes for details.
vtm.taskbar.Set({ id='<item_id>', [<attr_list...>] })Create or override a menu item using a comma-separated list of <attribute>=<value>.
vtm.taskbar.Del(['<item_id>'])Delete the taskbar menu item by <item_id>.
Delete all menu items if no <id> specified.
vtm.taskbar.dtvt(<dtvt_app...>)Create a temporary menu item and run the specified dtvt-executable.
vtm.taskbar.Selected('<item_id>')Set selected menu item using specified <item_id> (affected to the desktop RightDrag gesture and Tile's + button).
vtm.desktop.Shutdown(['try'])Terminate the running desktop session. If try is specified, the server will only shut down if there are no running windows.

Character escaping

The following escaped characters have special meaning:

CharactersExpanded to
\aASCII 0x07 BEL
\tASCII 0x09 TAB
\nASCII 0x0A LF
\rASCII 0x0D CR
\eASCII 0x1B ESC
\\ASCII 0x5C Backslash
\uA Unicode escape sequence in the form \u{XXX} or \uXXX, where XXX is the hexadecimal codepoint value.
$0Current module full path

Usage Examples

28 Feb 2025: Scripting functionality is under development.

Description
vtmRun Desktop Client.
vtm ssh <user@server> vtmRun Desktop Client remotely over SSH.
vtm -r termRun Terminal Console.
vtm -r term </path/to/console/app...>Run Terminal Console with a CUI application inside.
vtm ssh <user@server> vtm </path/to/console/app...>Run a CUI application remotely over SSH.
vtm -x "vtm.taskbar.Del(); vtm.taskbar.Set({ splitter, id='Apps' }); vtm.taskbar.Set({ id='Term' })"Run Desktop Client and reconfigure the taskbar menu.
echo "vtm.taskbar.Del(); vtm.taskbar.Set({ splitter, id='Apps' }); vtm.taskbar.Set({ id='Term' })" | vtm

echo "vtm.taskbar.Set({ id='user@server', type='dtty', cmd='ssh <user@server> vtm' })" | vtm
Reconfigure the taskbar menu of the running desktop.
echo "vtm.desktop.Run()" | vtm

echo "vtm.desktop.Run({ id='Term' })" | vtm

echo "vtm.desktop.dtvt('vtm -r term')" | vtm
Run Terminal Console on the running desktop.
echo "vtm.desktop.Run({ title='Console \nApplication', cmd='</path/to/app...>' })" | vtmRun Teletype Console with a CUI application inside on the running desktop.
echo "vtm.desktop.Run({ type='tile', title='Terminals', cmd='v(h(Term,Term),Term)' })" | vtmRun Tiling Window Manager with three terminals attached.
echo "vtm.desktop.Shutdown()" | vtmShutdown desktop server.