Skip to content

Latest commit

 

History

History
499 lines (451 loc) · 35.3 KB

apps.md

File metadata and controls

499 lines (451 loc) · 35.3 KB

Text-based Desktop Environment

Desktop Objects / Built-in Applications

Type Object Description
teletype Teletype Console A solid rectangular truecolor text canvas depicting a freely scrollable buffer of the text runs generated by an xterm-compatible parser from the standard output of an attached CUI application. It can be a very heavy object due to maintaining a scrollback buffer of arbitrary length. Not used directly in the desktop process's address space.
terminal Terminal Console A derivative of Teletype Console with additional UI controls.
dtvt DirectVT Gateway A lightweight truecolor text canvas depicting content received from an external dtvt-aware process.
vtty Teletype Console dtvt‑bridge A DirectVT Gateway hosting an external standalone Teletype Console process. It is designed to run a heavy Teletype Console object in the external process's address space to optimize desktop resource consumption.
term Terminal Console dtvt‑bridge A DirectVT Gateway hosting an external standalone Terminal Console process. It is designed to run a heavy Terminal Console object in the external process's address space to optimize desktop resource consumption.
dtty DirectVT Gateway with TTY A derivative of DirectVT Gateway stacked with additional limited Teletype Console as a controlling terminal. It is used for CUI applications that redirect DirectVT traffic to standard output and require user input via platform's TTY. Depending on activity the corresponding console became active for the user.
tile Tiling Window Manager A window container with an organization of the hosting window area into mutually non-overlapping panes for nested windows.
site Desktop Region Marker A transparent resizable frame for marking the specific desktop region for quick navigation across the borderless workspace.

Teletype / Terminal Console

Features

  • Horizontal scrolling.
  • Configurable scrollback buffer size (40k lines by default, limited by max_int32 and system RAM).
  • Scrollback buffer lookup.
  • Linear/box text selection:
    • Extending selection with Ctrl key pressed.
    • Changing selection mode (linear/box) with Alt key pressed.
    • Selecting a word/paragraph/entire scrollback buffer or a semantic block (when using OSC 133) by Double/Triple/Quadruple/Quintuple left clicking.
  • Multiple clipboard formats support:
    • Plain text
    • RTF
    • HTML
    • ANSI/VT
    • Protected (Windows only: ExcludeClipboardContentFromMonitorProcessing, CanIncludeInClipboardHistory, CanUploadToCloudClipboard)
  • Built-in Windows Console API server:
    • Legacy Win32 Console API support.
    • No Windows Console Host (conhost.exe) dependency.
    • Fullduplex pass-through VT input/output.
    • OEM/National, UTF-8 and UTF-16 encoding support.
    • Enforced ENABLE_WINDOW_INPUT mode.
      Note: In fact it is a viewport resize event reporting. Viewport dimensions is always equal to the win32 console buffer dimensions.
    • Enforced ENABLE_PROCESSED_OUTPUT and ENABLE_VIRTUAL_TERMINAL_PROCESSING modes.
    • Disabled ENABLE_QUICK_EDIT_MODE mode.
    • Per process (not per process name) Windows Command Prompt (cmd.exe) input history, aka "line input"/"cooked read".
  • Stdin/stdout logging.

Custom SGR attributes

Name Sequence Description
grid color CSI 68 : 2 :: r : g : b m
CSI 68 : 5 : n m
CSI 68 : n m
(not implemented) Set grid color.
reset grid color CSI 69 m (not implemented) Reset grid color (sync with foreground color).

Runtime configuraion vt-sequences

Name Sequence Description
CCC_SBS CSI 24 : n : m : q p Scrollback buffer configuration
n Initial buffer size
m Grow step
q Grow limit
CCC_SGR CSI 28 : Pm p Set terminal background using SGR attributes (one attribute at once)
Pm Colon-separated list of attributes, 0 — reset all attributes, default is 0
CCC_SEL CSI 29 : n p Set selection mode
n = 0 Selection is off (default)
n = 1 Select and copy as plaintext
n = 2 Select and copy as ANSI/VT text
n = 3 Select and copy as RTF-document
n = 4 Select and copy as HTML-code
n = 5 Select and copy as protected plaintext (suppressed preview, details)
CCC_PAD CSI 30 : n p Set scrollbuffer side padding
n Width in cells, max = 255, default is 0
CCC_RST CSI 1 p Reset all parameters to default
CCC_TBS CSI 5 : n p Set tab length
n Length in cells, max = 256, default is 8
CCC_JET CSI 11 : n p Set text alignment, default is Left
n = 0 default
n = 1 Left
n = 2 Right
n = 3 Center
CCC_WRP CSI 12 : n p Set text autowrap mode, default is On
n = 0 default
n = 1 On
n = 2 Off (enable horizontal scrolling)
CCC_RTL CSI 13 : n p Set text right-to-left mode, default is Off
n = 0 default
n = 1 On
n = 2 Off

Note: It is possible to combine multiple command into a single sequence using a semicolon. For example, the following sequence disables wrapping, enables text selection, and sets background to blue: CSI 12 : 2 ; 29 : 1 ; 28 : 44 p or CSI 12 : 2 ; 29 : 1 ; 28 : 48 : 2 : 0 : 0 : 255 p.

Custom menu configuration

It is possible to create your own terminal window menu from scratch by specifying a list of menu items in the <config/terminal/menu/> section of the configuration file.

Syntax

<config>
    <terminal>
        <menu>
            <item type="<menu_item_type>" action="<action>">
                <tooltip>
                    " Tooltip text.      \n"
                    " Can be multi-line. "
                </tooltip>
                <label="Content for label of index 0 (default)" data="<Argument_for_action_call_for_that_label.>"/>
                <label="Content for label of index 1"           data="<The required label will be selected automatically>"/>
                <label="Content for label of index 2"           data="< based on the argument if the action is performed by"/>
                <label="Content for label of index 3"           data="< someone outside the menu.>" tooltip="The label may have its own tooltip."/>
                ...
            </item>
            ...
        </menu>
    </terminal>
</config>

Attributes for the <config/terminal/menu/item> object

Attribute Description
type Menu item type.
label Menu item label list. One or more textual representations selected by data= value.
tooltip Tooltip content.
action The action name which called on item activation.

Attributes for the <config/terminal/menu/item/label> sub-object

Attribute Description
internal_value Label content variation label="_internal_value_".
data Textual argument for action call.
tooltip Tooltip content.

Attribute type

Value Description
Command Calls the action with the arguments from data=. This is the default value for the type attribute.
Option Cyclically selects the next label in the list and calls the action with the arguments from data=.
Repeat Selects the next label and calls the action repeatedly from the time it is pressed until it is released.

Actions action

* - Not implemented.

Value Arguments (data=) Description
ExclusiveKeyboardMode Toggle exclusive keyboard mode.
TerminalCwdSync Current working directory sync toggle. The command to send for synchronization is configurable via the <config><terminal cwdsync=" cd $P\n"/></config> setting's option. Where $P is a variable containing current path received via OSC 9;9 notification.
To enable OSC9;9 shell notifications:
- Windows Command Prompt:
setx PROMPT $e]9;9;$P$e\$P$G
- PowerShell:
function prompt{ $e=[char]27; "$e]9;9;$(Convert-Path $pwd)$e\PS $pwd$('>' * ($nestedPromptLevel + 1)) " }
- Bash:
export PS1='\[\033]9;9;\w\033\\\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
TerminalWrapMode on | off Set terminal scrollback lines wrapping mode. Applied to the active selection if it is.
TerminalAlignMode left | right | center Set terminal scrollback lines aligning mode. Applied to the active selection if it is.
TerminalFindNext Highlight next match of selected text fragment. Clipboard content is used if no active selection.
TerminalFindPrev Highlight previous match of selected text fragment. Clipboard content is used if no active selection.
TerminalOutput Text string Direct output the string to the terminal scrollback.
TerminalSendKey Text string Simulating keypresses using the specified string.
TerminalQuit Terminate runnning console apps and close terminal.
TerminalRestart Terminate runnning console apps and restart current session.
TerminalFullscreen Toggle fullscreen mode.
TerminalMaximize Toggle between maximized and normal window size.
TerminalMinimize Minimize window.
TerminalUndo (Win32 Cooked/ENABLE_LINE_INPUT mode only) Discard the last input.
TerminalRedo (Win32 Cooked/ENABLE_LINE_INPUT mode only) Discard the last Undo command.
TerminalClipboardCopy Сopy selection to clipboard.
TerminalClipboardPaste Paste from clipboard.
TerminalClipboardWipe Reset clipboard.
TerminalClipboardFormat none | text | ansi |
rich | html | protected
Set terminal text selection copy format.
TerminalSelectionRect on | off Set linear(off) or rectangular(on) selection form using boolean value.
TerminalSelectionCancel Deselect a selection.
TerminalSelectionOneShot none | text | ansi |
rich | html | protected
One-shot toggle to copy text while mouse tracking is active. Keep selection if Ctrl key is pressed.
TerminalViewportCopy Сopy viewport to clipboard.
TerminalScrollViewportByPage IntX, IntY Scroll viewport by IntX, IntY pages.
TerminalScrollViewportByCell IntX, IntY Scroll viewport by IntX, IntY cells.
TerminalScrollViewportToTop Scroll viewport to the scrollback top.
TerminalScrollViewportToEnd Scroll viewport to the scrollback bottom (reset viewport position).
TerminalStdioLog on | off Toggle stdin/stdout logging to the specified state, or just toggle to another state if no arguments are specified.
*TerminalLogStart Start logging to file.
*TerminalLogPause Pause logging.
*TerminalLogStop Stop logging.
*TerminalLogAbort Abort logging.
*TerminalLogRestart Restart logging to file.
*TerminalVideoRecStart Start DirectVT(dtvt) video recording to file.
*TerminalVideoRecStop Stop dtvt-video recording.
*TerminalVideoRecPause Pause dtvt-video recording.
*TerminalVideoRecAbort Abort dtvt-video recording.
*TerminalVideoRecRestart Restart dtvt-video recording to file.
*TerminalVideoPlay Play dtvt-video from file.
*TerminalVideoPause Pause dtvt-video.
*TerminalVideoStop Stop dtvt-video.
*TerminalVideoForward Fast forward dtvt-video by N ms.
*TerminalVideoBackward Rewind dtvt-video by N ms.
*TerminalVideoHome Rewind dtvt-video to the beginning.
*TerminalVideoEnd Rewind dtvt-video to the end.

Default Hotkeys

List of hotkeys defined in the default configuration.

Hotkey Description
Ctrl-Alt | Alt-Ctrl Win32: Toggle exclusive keyboard mode.
Alt+Shift+B Unix: Toggle exclusive keyboard mode.
Alt+RightArrow Highlight next match of selected text fragment. Clipboard content is used if no active selection.
Alt+LeftArrow Highlight previous match of selected text fragment. Clipboard content is used if no active selection.
Shift+Ctrl+PageUp Scroll one page up.
Shift+Ctrl+PageDown Scroll one page down.
Shift+Alt+LeftArrow Scroll one page to the left.
Shift+Alt+RightArrow Scroll one page to the right.
Shift+Ctrl+UpArrow Scroll one line up.
Shift+Ctrl+DownArrow Scroll one line down.
Shift+Ctrl+LeftArrow Scroll one cell to the left.
Shift+Ctrl+RightArrow Scroll one cell to the right.
Shift+Ctrl+Home Scroll to the scrollback top.
Shift+Ctrl+End Scroll to the scrollback bottom (reset viewport position).
Ctrl+Insert Copy selection to clipboard if it is.
Shift+Insert Paste from clipboard.
Esc Deselect a selection if it is.

Terminal configuration example

<config>
    <terminal>
        <menu item*>
            <item action=TerminalFindPrev>  <!-- type=Command is a default item's attribute. -->
                <tooltip>
                    " Previous match                                  \n"
                    "   LeftClick to jump to previous match or scroll \n"
                    "             one page up if nothing to search    \n"
                    "   Match clipboard data if no selection          \n"
                    "   Left+RightClick to clear clipboard            "
                </tooltip>
                <label="<"/>
                <label="\e[38:2:0:255:0m<\e[m"/>
            </item>
            <item action=TerminalFindNext>
                <tooltip>
                    " Next match                                     \n"
                    "   LeftClick to jump to next match or scroll    \n"
                    "             one page down if nothing to search \n"
                    "   Match clipboard data if no selection         \n"
                    "   Left+RightClick to clear clipboard           "
                </tooltip>
                <label=">"/>
                <label="\e[38:2:0:255:0m>\e[m"/>
            </item>
            <item type="Option" action=ExclusiveKeyboardMode>
                <tooltip>
                    " Toggle exclusive keyboard mode              \n"
                    "   Exclusive keyboard mode allows keystrokes \n"
                    "   to be passed through without processing   "
                </tooltip>
                <label=" Desktop "                                      data="off"/>
                <label="\e[48:2:0:128:128;38:2:0:255:0m Exclusive \e[m" data="on"/>
            </item>
            <item type="Option" action=TerminalWrapMode>
                <tooltip>
                    " Wrapping text lines on/off      \n"
                    " - applied to selection if it is "
                </tooltip>
                <label="Wrap"                     data="off"/>
                <label="\e[38:2:0:255:0mWrap\e[m" data="on"/>
            </item>
            <item type="Option" action=TerminalAlignMode>
                <tooltip>
                    " Align text lines left/right/center \n"
                    " - applied to selection if it is    "
                </tooltip>
                <label="\e[38:2:0:255:0mLeft\e[m"     data="left"/>
                <label="\e[38:2:0:255:255mRight\e[m"  data="right"/>
                <label="\e[38:2:255:255:0mCenter\e[m" data="center"/>
            </item>
            <item type="Option" action=TerminalClipboardFormat tooltip=" Text selection mode ">  <!-- type=Option means that the тext label will be selected when clicked.  -->
                <label="Selection"                       data="none"/>
                <label="\e[38:2:0:255:0mPlaintext\e[m"   data="text"/>
                <label="\e[38:2:255:255:0mANSI-text\e[m" data="ansi"/>
                <label data="rich">
                    "\e[38:2:109:231:237m""R"
                    "\e[38:2:109:237:186m""T"
                    "\e[38:2:60:255:60m"  "F"
                    "\e[38:2:189:255:53m" "-"
                    "\e[38:2:255:255:49m" "s"
                    "\e[38:2:255:189:79m" "t"
                    "\e[38:2:255:114:94m" "y"
                    "\e[38:2:255:60:157m" "l"
                    "\e[38:2:255:49:214m" "e" "\e[m"
                </label>
                <label="\e[38:2:0:255:255mHTML-code\e[m" data="html"/>
                <label="\e[38:2:0:255:255mProtected\e[m" data="protected"/>
            </item>
            <item type="Option" action=TerminalStdioLog tooltip=" Stdin/out logging is off ">
                <label="Log"                     data="off"/>
                <label="\e[38:2:0:255:0mLog\e[m" data="on" tooltip=" Stdin/out logging is on \n Run Logs to see output  "/>
            </item>
            <item label="  " tooltip=" just empty menu block/splitter "/>
            <item action=TerminalOutput tooltip=" Clear TTY viewport ">
                <label="Clear" data="\e[2J"/>
            </item>
            <item action=TerminalOutput tooltip=" Clear scrollback and SGR-attributes ">
                <label="Reset" data="\e[!p"/>
            </item>
            <item type="Command" action=TerminalRestart label="Restart"/>
            <item action=TerminalScrollViewportToTop    label="Top"/>
            <item action=TerminalScrollViewportToEnd    label="End"/>

            <item type="Repeat" action=TerminalScrollViewportByPage><label="PgLeft"    data=" 1, 0"/></item>
            <item type="Repeat" action=TerminalScrollViewportByPage><label="PgRight"   data="-1, 0"/></item>
            <item type="Repeat" action=TerminalScrollViewportByPage><label="PgUp"      data=" 0, 1"/></item>
            <item type="Repeat" action=TerminalScrollViewportByPage><label="PgDn"      data=" 0,-1"/></item>
            <item type="Repeat" action=TerminalScrollViewportByCell><label="CharLeft"  data=" 1, 0"/></item>
            <item type="Repeat" action=TerminalScrollViewportByCell><label="CharRight" data="-1, 0"/></item>
            <item type="Repeat" action=TerminalScrollViewportByCell><label="LineUp"    data=" 0, 1"/></item>
            <item type="Repeat" action=TerminalScrollViewportByCell><label="LineDn"    data=" 0,-1"/></item>

            <item action=TerminalViewportCopy    label="PrnScr"/>
            <item action=TerminalSelectionCancel label="Deselect"/>
            
            <item type="Option" action=TerminalSelectionRect>
                <label="Line" data="false"/>
                <label="Rect" data="true"/>
            </item>
            <item type="Repeat"  action=TerminalClipboardCopy  label="Copy"/>
            <item type="Repeat"  action=TerminalClipboardPaste label="Paste"/>
            <item type="Repeat"  action=TerminalClipboardWipe  label="Wipe"/>
            <item type="Command" action=TerminalUndo           label="Undo"/>
            <item type="Command" action=TerminalRedo           label="Redo"/>
            <item type="Command" action=TerminalQuit           label="Quit"/>
            <item type="Command" action=TerminalFullscreen     label="Fullscreen"/>
            <item type="Command" action=TerminalMaximize       label="Maximize"/>
            <item type="Command" action=TerminalMinimize       label="Minimize"/>
            <item type="Command" action=Noop                   label="Noop"/>

            <item type="Option" action=TerminalCwdSync>
                <label="Sync"                     data="off" tooltip=" CWD sync is off "/>
                <label="\e[38:2:0:255:0mSync\e[m" data="on"  tooltip=" CWD sync is on                          \n Make sure your shell has OSC9;9 enabled "/>
            </item>

            <item action=TerminalSendKey tooltip=" Simulate keypresses ">
                <label="Hello, World!" data="Hello World!"/>
            </item>
            <item type="Repeat" action=TerminalOutput tooltip=" test ">
                <label="Push Me" data="pressed"/>
                <label="\e[37mPush Me\e[m"/>
            </item>

            <item type="Option" action=TerminalSelectionOneShot>
                <tooltip>
                    " One-shot toggle to copy as HTML \n"
                    " while mouse tracking is active. "
                </tooltip>
                <label=" HTML "                                      data="none"/>
                <label="\e[48:2:0:128:128;38:2:0:255:255m HTML \e[m" data="html"/>
            </item>
            <item type="Option" action=TerminalSelectionOneShot>
                <tooltip>
                    " One-shot toggle to copy as Text \n"
                    " while mouse tracking is active. "
                </tooltip>
                <label=" Text "                                  data="none"/>
                <label="\e[48:2:0:128:0;38:2:0:255:0m Text \e[m" data="text"/>
            </item>
            <item type="Option" action=TerminalSelectionOneShot>
                <tooltip>
                    " One-shot toggle to copy as Text/HTML \n"
                    " while mouse tracking is active.      "
                </tooltip>
                <label="One-Shot"                                      data="none"/>
                <label="\e[48:2:0:128:0;38:2:0:255:0m  Text  \e[m"     data="text"/>
                <label="\e[48:2:0:128:128;38:2:0:255:255m  HTML  \e[m" data="html"/>
            </item>
        </menu>
    </terminal>
    <hotkeys>  <!--  The required key combination sequence can be generated on the Info page, accessible by clicking on the label in the lower right corner of the vtm desktop.   -->
        <tui key*>  <!-- TUI matrix layer key bindings. -->
            <key="Space-Backspace | Backspace-Space" action=ToggleDebugOverlay/>  <!-- Toggle debug overlay. -->
        </tui>
        <terminal key*>
            <key="Ctrl-Alt | Alt-Ctrl" preview action=ExclusiveKeyboardMode/>  <!-- Toggle exclusive keyboard mode by pressing and releasing Ctrl-Alt or Alt-Ctrl (reversed release order). -->
            <key="Alt+RightArrow"            action=TerminalFindNext/>  <!-- Highlight next match of selected text fragment. Clipboard content is used if no active selection. -->
            <key="Alt+LeftArrow"             action=TerminalFindPrev/>  <!-- Highlight previous match of selected text fragment. Clipboard content is used if no active selection. -->
            <key="Shift+Ctrl+PageUp"       ><action=TerminalScrollViewportByPage data=" 0, 1"/></key>  <!-- Scroll viewport one page up. -->
            <key="Shift+Ctrl+PageDown"     ><action=TerminalScrollViewportByPage data=" 0,-1"/></key>  <!-- Scroll viewport one page down. -->
            <key="Shift+Alt+LeftArrow"     ><action=TerminalScrollViewportByPage data=" 1, 0"/></key>  <!-- Scroll viewport one page to the left. -->
            <key="Shift+Alt+RightArrow"    ><action=TerminalScrollViewportByPage data="-1, 0"/></key>  <!-- Scroll viewport one page to the right. -->
            <key="Shift+Ctrl+UpArrow"      ><action=TerminalScrollViewportByCell data=" 0, 1"/></key>  <!-- Scroll viewport one line up. -->
            <key="Shift+Ctrl+DownArrow"    ><action=TerminalScrollViewportByCell data=" 0,-1"/></key>  <!-- Scroll viewport one line down. -->
            <key="Shift+Ctrl+LeftArrow"    ><action=TerminalScrollViewportByCell data=" 1, 0"/></key>  <!-- Scroll viewport one cell to the left. -->
            <key="Shift+Ctrl+RightArrow"   ><action=TerminalScrollViewportByCell data="-1, 0"/></key>  <!-- Scroll viewport one cell to the right. -->
            <key="Shift+Ctrl+Home">
                <action=DropAutoRepeat/>               <!-- Don't autorepeat the Scroll to the scrollback top. -->
                <action=TerminalScrollViewportToTop/>  <!-- Scroll to the scrollback top. -->
            </key>
            <key="Shift+Ctrl+End">
                <action=DropAutoRepeat/>               <!-- Don't autorepeat the Scroll to the scrollback bottom (reset viewport position). -->
                <action=TerminalScrollViewportToEnd/>  <!-- Scroll to the scrollback bottom (reset viewport position). -->
            </key>
            <key="">                   <action=TerminalSendKey data="test\r"/></key>  <!-- Simulating keypresses using the specified string. -->
            <key="">                   <action=TerminalOutput  data="Hello!"/></key>  <!-- Direct output the string to the terminal scrollback. -->
            <key=""                     action=TerminalViewportCopy/>                 <!-- Сopy viewport to clipboard. -->
            <key="Ctrl+Insert"  preview action=TerminalClipboardCopy/>                <!-- Сopy selection to clipboard. -->
            <key="Shift+Insert" preview action=TerminalClipboardPaste/>               <!-- Paste from clipboard. -->
            <key=""                     action=TerminalClipboardWipe/>                <!-- Reset clipboard. -->
            <key=""                     action=TerminalClipboardFormat/>              <!-- Toggle terminal text selection copy format. -->
            <key=""                     action=TerminalSelectionRect/>                <!-- Toggle between linear and rectangular selection form. -->
            <key="Esc" preview          action=TerminalSelectionCancel/>              <!-- Deselect a selection. -->
            <key=""                     action=TerminalSelectionOneShot/>             <!-- One-shot toggle to copy text while mouse tracking is active. Keep selection if 'Ctrl' key is pressed. -->
            <key=""                     action=TerminalUndo/>                         <!-- (Win32 Cooked/ENABLE_LINE_INPUT mode only) Discard the last input. -->
            <key=""                     action=TerminalRedo/>                         <!-- (Win32 Cooked/ENABLE_LINE_INPUT mode only) Discard the last Undo command. -->
            <key=""                     action=TerminalCwdSync/>                      <!-- Toggle the current working directory sync mode. -->
            <key=""                     action=TerminalWrapMode/>                     <!-- Toggle terminal scrollback lines wrapping mode. Applied to the active selection if it is. -->
            <key=""                     action=TerminalAlignMode/>                    <!-- Toggle terminal scrollback lines aligning mode. Applied to the active selection if it is. -->
            <key=""                     action=TerminalFullscreen/>                   <!-- Toggle fullscreen mode. -->
            <key=""                     action=TerminalMaximize/>                     <!-- Toggle between maximized and normal window size. -->
            <key=""                     action=TerminalMinimize/>                     <!-- Minimize window. -->
            <key=""                     action=TerminalStdioLog/>                     <!-- Toggle stdin/stdout logging. -->
            <key=""                     action=TerminalRestart/>                      <!-- Terminate runnning console apps and restart current session. -->
            <key=""                     action=TerminalQuit/>                         <!-- Terminate runnning console apps and close terminal. -->
        </terminal>
    </hotkeys>
</config>

DirectVT Gateway

DirectVT Gateway is used to attach DirectVT-aware sources. It is mainly used to receive DirectVT traffic from an external dtvt-endpoint.

DirectVT Gateway with TTY

DirectVT Gateway with TTY is used when there is a need for interactive interaction with the user through the controlling terminal. For example, this is required when connecting via SSH with keyboard-interactive authentication or requesting a private key passphrase.

In case of running in standalone mode this window object type is used automatically if the first command line argument begins with ssh keyword.

The following commands are identical:

vtm -r dtty ssh user@host vtm
vtm ssh user@host vtm

Desktop Region Marker

The Desktop Region Marker is used to quickly navigate the desktop by left-clicking on an instance in the taskbar. The region title can be set using the clipboard text data by right-clicking once on the region frame (swap clipboard text with title text).

Tiling Window Manager

Tiling Window Manager is a window container that organizes the workspace into mutually non-overlapping panes for nested windows.

Features

  • Supports Drag and Drop for panes (like tabs in a browser).
  • Use any modifier (Ctrl or Alt) while pane dragging to deactivate drag&drop mode.
  • List of panes (outside the right side of the Tile window)
    • LeftClick -- Set exclusive focus
    • Ctrl+LeftClick -- Set/Unset group focus
    • double LeftClick -- Maxixmize/restore
  • Configurable via settings (See configuration example in doc\settings.md`).

Tiling Window Manager configuration example

<config>
    <tile>
        <menu item*>
            <autohide=menu/autohide/>
            <slim=menu/slim/>
            <item action=TileRunApplicatoin label=" + ">
                <tooltip>
                    " Launch application instances in active empty slots.     \n"
                    " The app to run can be set by RightClick on the taskbar. "
                </tooltip>
            </item>
            <item action=TileSelectAllPanes     label=":::" tooltip=" Select all panes "/>
            <item action=TileSplitHorizontally  label="" tooltip=" Split active panes horizontally "/>
            <item action=TileSplitVertically    label="──"  tooltip=" Split active panes vertically "/>
            <item action=TileSplitOrientation   label="┌┘"  tooltip=" Change split orientation "/>
            <item action=TileSwapPanes          label="<->" tooltip=" Swap two or more panes "/>
            <item action=TileEqualizeSplitRatio label=">|<" tooltip=" Equalize split ratio "/>
            <item action=TileSetManagerTitle    label='"…"' tooltip=" Set tiling window manager title using clipboard data "/>
            <item action=TileClosePane          label="×"   tooltip=" Close active application "/>
            <!-- <item action=TileFocusPrev      label="<"   tooltip=" Focus the previous pane or the split grip "/> -->
            <!-- <item action=TileFocusNext      label=">"   tooltip=" Focus the next pane or the split grip "/> -->
            <!-- <item action=TileFocusPrevPane  label="<-"  tooltip=" Focus the previous pane "/> -->
            <!-- <item action=TileFocusNextPane  label="->"  tooltip=" Focus the next pane "/> -->
        </menu>
    </tile>
    <hotkeys>  <!-- The required key combination sequence can be generated on the Info page, accessible by clicking on the label in the lower right corner of the vtm desktop. -->
        <desktop key*>  <!-- Desktop layer key bindings. -->
            <key="Ctrl+PageUp"   action=FocusPrevWindow/>  <!-- Switch focus to the next desktop window. -->
            <key="Ctrl+PageDown" action=FocusNextWindow/>  <!-- Switch focus to the previous desktop window. -->
            <key="Shift+F7"      action=Disconnect/>       <!-- Disconnect from the desktop. -->
            <key="F10" preview   action=TryToQuit/>        <!-- Shut down the desktop server if no applications are running. -->
            <key="Alt+Shift+N"   action=RunApplication/>   <!-- Run default application. -->
        </desktop>
        <tile key*>
            <key="Ctrl+PageUp"     action=TileFocusPrev         />  <!-- Focus the previous pane or the split grip. -->
            <key="Ctrl+PageDown"   action=TileFocusNext         />  <!-- Focus the next pane or the split grip. -->
            <key=""                action=TileFocusPrevPane     />  <!-- Focus the previous pane. -->
            <key=""                action=TileFocusNextPane     />  <!-- Focus the next pane. -->
            <key="Alt+Shift+N"     action=TileRunApplicatoin    />  <!-- Launch application instances in active empty slots. The app to run can be set by RightClick on the taskbar. -->
            <key="Alt+Shift+A"     action=TileSelectAllPanes    />  <!-- Select all panes. -->
            <key="Alt+Shift+'|'"   action=TileSplitHorizontally />  <!-- Split active panes horizontally. -->
            <key="Alt+Shift+Minus" action=TileSplitVertically   />  <!-- Split active panes vertically. -->
            <key="Alt+Shift+R"     action=TileSplitOrientation  />  <!-- Change split orientation. -->
            <key="Alt+Shift+S"     action=TileSwapPanes         />  <!-- Swap two or more panes. -->
            <key="Alt+Shift+E"     action=TileEqualizeSplitRatio/>  <!-- Equalize split ratio. -->
            <key="Alt+Shift+F2"    action=TileSetManagerTitle   />  <!-- Set tiling window manager title using clipboard data. -->
            <key="Alt+Shift+W"     action=TileClosePane         />  <!-- Close active application. -->
            <grips key*>
                <key="LeftArrow" ><action=TileMoveGrip   data="-1, 0"/></key>  <!-- Move the split grip to the left. -->
                <key="RightArrow"><action=TileMoveGrip   data=" 1, 0"/></key>  <!-- Move the split grip to the right. -->
                <key="UpArrow"   ><action=TileMoveGrip   data=" 0,-1"/></key>  <!-- Move the split grip up. -->
                <key="DownArrow" ><action=TileMoveGrip   data=" 0, 1"/></key>  <!-- Move the split grip down. -->
                <key="'-'"       ><action=TileResizeGrip data="-1"   /></key>  <!-- Decrease the split grip width. -->
                <key="Shift+'+' | NumpadPlus"><action=TileResizeGrip data="1"/></key>  <!-- Increase the split grip width. -->
                <key="Shift+Tab" action=TileFocusPrevGrip/>  <!-- Focus the next split grip. -->
                <key="Tab"       action=TileFocusNextGrip/>  <!-- Focus the previous split grip. -->
            </grips>
        </tile>
    </hotkeys>
</config>