/vtm

Terminal multiplexer with window manager and session sharing

Primary LanguageC++MIT LicenseMIT

Monotty Desktopio

Text-based desktop environment inside your terminal*

image

* Terminal Requirements

Demo

Demo on YouTube

Live SSH

  • ssh vtm@netxs.online

Video

Supported Platforms

  • POSIX-oriented
    • Linux
    • macOS
    • FreeBSD
    • NetBSD
    • OpenBSD
    • ...
  • Windows
    • Windows 10 or later
    • Windows Server 2019 or later

Building from Source

POSIX-oriented

Build-time dependencies

  • git
  • cmake
  • gcc or clang with support for C++20
git clone https://github.com/netxs-group/vtm.git && cd ./vtm
cmake ./src -DCMAKE_BUILD_TYPE=Release
cmake --build .
cmake --install .

Windows

Build-time dependencies

  • git
  • cmake
  • Visual Studio 2019

Use Developer Command Prompt for VS 2019 as a build environment

git clone https://github.com/netxs-group/vtm.git && cd ./vtm
cmake ./src -DCMAKE_BUILD_TYPE=Release "-GVisual Studio 16 2019"
cmake --build . --config Release
cd ./Release
powershell ../src/install/install.ps1

Binaries







Command Line Options vtm(.exe)

Option Description
No arguments Run client (auto start server)
-d Run server in background
-s Run server in interactive mode

User Interface

Sidebar App window Desktop
App group Running app User list ≡ Menu Menu bar Interior Resize grips Navigation strings Free space
Ctrl + PgUp/Dn Switch between running apps and assign exclusive keyboard focus
LeftClick Run app Go to app Maximize/restore Assign exclusive keyboard focus Go to app Clear keyboard focus
Ctrl + LeftClick Assign/clear group keyboard focus
double LeftClick Maximize/restore app window
RightClick Set default app Center app window Toggle menu height Center app window
Left+Right or MiddleClick Close app
LeftDrag Adjust sidebar width Move app window Panoramic workspace scrolling
RightDrag Panoramic content scrolling Run default app
MiddleDrag Run default app
Left+RightDrag Panoramic workspace scrolling
Ctrl+RightDrag or Ctrl+MiddleDrag Copy selected area to clipboard, OSC 52
Wheel Vertical scrolling
Shift+Wheel or Ctrl+Wheel Horizontal scrolling

Built-in Applications

  • ▀▄ Term Terminal emulator
  • ▀▄ Logs Debug output console
  • ▀▄ View Workspace navigation helper
  • ▀▄ Tile Tiling window manager
show details...

  • ▀▄ Term

    • UTF-8 Everywhere

    • Unicode clustering

    • TrueColor/256-color support

    • Auto-wrap mode DECAWM (with horizontal scrolling)

    • Focus tracking DECSET 1004

    • Bracketed paste mode DECSET 2004

    • SGR attributes: overline, double underline, strikethrough, and others

    • Save/restore terminal window title XTWINOPS 22/23

    • Mouse tracking DECSET 1000/1002/1003/1006 SGR mode

    • Mouse tracking DECSET 10060 Extended SGR mode, mouse reporting outside of the terminal viewport (outside + negative arguments) #62

    • Configurable using VT-sequences

      Name Sequence Description
      CCC_SBS CSI 24 : n : m p Set scrollback buffer size, int32_t
      n Initial buffer size in lines; 0 — grow step is used for initial size; default (if omitted) is 20.000
      m Grow step for unlimited buffer; default (if omitted) is 0 — for fixed size buffer
      CCC_RST CSI 1 p Reset all parameters to default
      CCC_TBS CSI 5 : n p Set tabulation length
      n Length in chars, 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
  • ▀▄ Logs

    • Debug output console. Use double RightClick to clear scrollback.
  • ▀▄ View

    • Serves for quick navigation through the desktop space using cyclic selection (left click on group title) in the View group on the taskbar.
  • ▀▄ Tile

    • Supports Drag and Drop for panes (like tabs in a browser).
    • Use any modifier (Ctrl or Alt) while pane dragging to disable drag&drop mode.
    • List of panes (outside the right side of the window)
      • LeftClick -- Set exclusive focus (highlighted by color)
      • Ctrl+LeftClick -- Set group focus (highlighted by color)
      • double LeftClick -- Maxixmize/restore
      • Left+Right or MiddleClick -- Terminate application
    • Tiling window manager preconfigurable using environment variable VTM_PROFILE....
      # Configuration example:
      
      VTM_PROFILE_1='"Menu label 1", "Window Title 1", h1:2( v1:1("bash -c htop", "bash -c mc"), "bash")'
      VTM_PROFILE_2='"Menu label 2", "Window Title 2", h( v("bash -c htop", "bash -c mc"), "bash")'
      

Related Repositories

Desktopio Framework Documentation


HitCount Twitter handle