vtm

Text-based desktop environment

MIT License

Stars
1.5K

Bot releases are hidden (Show)

vtm - v0.9.83

Published by o-sdn-o 4 months ago

Changes (release for testing window rendering in GUI mode, win32 only)

  • This is still only a test GUI window.
  • Add support for glyph run alignment, rotation and flipping (using Unicode Variation Selectors VS4-VS14). See #571 for details.
  • Update to Unicode 16.0 ("Large Type Pieces" support).
  • Add support for GUI full screen mode.
  • Add a GUI related config section:
    <config>
      <gui> <!-- GUI related settings. (win32 platform only for now) -->
          <antialiasing = off />   <!-- Antialiasing of rendered glyphs. Note: Multi-layered color glyphs such as emoji are always antialiased. -->
          <cellheight = 20 />      <!-- Text cell height in physical pixels. Note: The width of the text cell depends on the primary font (the first one in the font list). -->
          <gridsize = 0,0 />       <!-- Window initial grid size in text cells. -->
          <wincoor = 0,0 />        <!-- Window initial coordinates (top-left corner on the desktop in physical pixels). -->
          <winstate = undefined /> <!-- Window initial state: undefined | maximized | minimized -->
          <fontlist> <!-- Font fallback list (LF-delimited (\n), ordered). The rest of the fonts available in the system will be loaded dynamically. -->
              "Courier New\n" <!-- Primary font. Its metrics define the cell geometry. -->
              "Iosevka Term\n"
              "JetBrains Mono\n"
              "Cascadia Mono\n"
              "DejaVu Sans Mono\n"
              "Envy Code R\n"
              "Fira Code\n"
              "monofur for Powerline\n"
              "Lucida Console\n"
              "Consolas\n"
              "Anonymous Pro\n"
              "Source Code Pro\n"
              "NSimSun\n"
              "Noto Sans Devanagari\n"
          </fontlist>
          <testtext="test \e[41;94m UTF-8 \e[m string 👌︌︉︅󐀮😃👌︋︅󐀮 (See ~/.config/vtm/settings.xml: /config/gui/testtext/)"/>
      </gui>
    </config>
    
  • https://learn.microsoft.com/en-us/cpp/overview/cpp-conformance-improvements?view=msvc-170#__va_opt__-is-enabled-as-an-extension-under-zcpreprocessor

Note: vtm automatically switches to the graphical mode if it is launched by the graphical shell (explorer.exe), or by the start vtm.exe command (e.g. on Windows Core).

vtm - v0.9.82

Published by o-sdn-o 5 months ago

Changes

  • Nothing special, just a slightly update GUI window. #571

8x4 character matrix support
image

https://github.com/directvt/vtm/assets/11535558/60ce28bd-05e6-45e1-896a-a6b43fb05956

vtm - v0.9.81

Published by o-sdn-o 6 months ago

Changes

  • Implement one-shot toggle to copy text while mouse tracking is active. #588

New configurable menu button:

Action Description
TerminalSelectionOneShot One-shot toggle to copy text while mouse tracking is active. Keep selection if Ctrl key is pressed.The data= attribute can have the following values none, text, ansi, rich, html, protected.

Closes #588

Configuration example (~/.config/vtm/settings.xml)

<config>
  <term>
    <item label=" HTML " data=none type=Option action=TerminalSelectionOneShot>
      <label="\e[48:2:0:128:128;38:2:0:255:255m HTML \e[m" data=html/>
      <notes>
        " One-shot toggle to copy as HTML \n"
        " while mouse tracking is active. "
      </notes>
    </item>
    <item label=" Text " data=none type=Option action=TerminalSelectionOneShot>
      <label="\e[48:2:0:128:0;38:2:0:255:0m Text \e[m" data=text/>
      <notes>
        " One-shot toggle to copy as Text \n"
        " while mouse tracking is active. "
      </notes>
    </item>
    <item label="One-Shot" data=none type=Option action=TerminalSelectionOneShot>
      <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/>
      <notes>
        " One-shot toggle to copy as Text/HTML \n"
        " while mouse tracking is active.      "
      </notes>
    </item>
  </term>
</config>

https://github.com/directvt/vtm/assets/11535558/c8049348-72fe-40f9-b4f7-85621248b463

vtm - v0.9.80

Published by o-sdn-o 6 months ago

Changes

vtm - v0.9.79

Published by o-sdn-o 6 months ago

Changes:

  • Revise title/footer rendering in GUI mode (fix shadows and overbright). #571
  • Add a side border option config/term/layout/border (=0 by default). #584:
<config>
    <term>
        <layout>
            <oversize=0 opacity=0xC0/>  <!-- Scrollback horizontal (left and right) oversize. (for convenient horizontal scrolling). -->
            <border=1/>                 <!-- Viewport's left and right border. -->
        </layout>
    </term>
</config>
  • config/term/fields section renamed to config/term/layout
  • config/term/fields/size option renamed to the config/term/layout/oversize section
  • config/term/fields/lucent option renamed to config/term/layout/oversize/opacity

image

vtm - v0.9.78

Published by o-sdn-o 6 months ago

Changes

  • Switch to ARGB pixel format (0xaarrggbb) from ABGR. All color settings in your current configurations are affected - the red channel has been swapped with the blue channel. This had to be done for compatibility with GUI mode.
  • Terminal: Fix viewport reset when changing selection mode. #584
  • Introducing a graphical window that can run on various Windows platforms starting with Windows 8.1 (including Window Server 2019 Core). #571
    • vtm automatically switches to the graphical mode if it is launched by the graphical shell (explorer.exe), or by the start vtm.exe command (e.g. on Windows Core).
    • Text cell rendering is not implemented. It is just a proof of concept.
    • The vtm server starts in the background, despite the fact that its interface is not rendered yet.
    • It is not yet clear whether we need to involve the GPU here for rendering. It's not a big deal, but at the moment it seems that software rendering is quite enough (60fps, etc). Over time it will become clear.
    • Colored emojis are funny on Windows8:
      image
    • On Windows Server Core (which is desktopless), the system window manager doesn't support "overbright" pixels (it requires alpha-premultiplied pixel values), so translucent windows are a little buggy, but that's not a big deal:
      image
    • Windows PE is also supported:
      image
vtm - v0.9.77

Published by o-sdn-o 7 months ago

Changes

  • Fix PowerShell/PSReadLine input echo on Windows. #581
    image
vtm - v0.9.76

Published by o-sdn-o 7 months ago

Changes

  • Add color cursor support (OSC 12/112):
    Set/reset cursor color:
    printf "\e]12;rgb:00/ff/00\e\\"  # Set cursor color to green.
    printf "\e]112;\e\\"             # Reset cursor color to default.
    
    Run terminal with red cursor:
    printf "vtm.run(id=Term cfg='<config><term><cursor><color bgc=reddk/></cursor></term></config>')" | vtm
    
    Set red cursor in settings.xml:
    <config>
      <term>
        <cursor>
          <style="block"/> <!-- Cursor style: underline | block -->
          <blink=400ms/>       <!-- Cursor blink period. Set to zero for a steady cursor. -->
          <show=true/>
          <color bgc=reddk fgc=default /> <!-- Cursor cell color. By default, the cursor color (bgc) is set to either black or white depending on the lightness of the underlying text background. -->
        </cursor>
      </term>
    </config>
    
  • Make the terminal window opaque by default.
  • Make window shadow configurable:
    <config>
      <appearance>
        <defaults>
          <shadow> <!-- Window shadow configuration. -->
            <enabled = true />
            <blur = 3 />         <!-- Blur radius (in cells). Default is 3. -->
            <bias = 0.37 />      <!-- Shadow contour bias [0.0 - 1.0]. Default is 0.37 -->
            <opacity = 105.5 />  <!-- Opacity level (alpha) [0.0 - 255.0]. Default is 105.5 -->
            <offset = 2,1 />     <!-- 2D offset relative to the window (in cells). Default is 2,1. -->
          </shadow>
        </defaults>
      </appearance>
    </config>
    
vtm - v0.9.75b

Published by o-sdn-o 7 months ago

v0.9.75b

Changes

  • Make terminal scrollback transparent by default to provide clear boundaries for the console applications output:
    <config>
      <term>
        <color>
          <bground = transparent />  <!-- Independent background color of the scrollback canvas. Set to 0x00ffffff(default) to sync with SGR49 (default background). -->
        </color>
      </term>
    </config>
    
vtm - v0.9.75a

Published by o-sdn-o 7 months ago

Changes

  • Add window shadows:
    image
  • Make the terminal scrollback background color independent and configurable:
    <config>
      <term>
        <color>
          <bground = transparent />  <!-- Independent background color of the scrollback canvas. Set to 0x00ffffff(default) to sync with SGR49 (default background). -->
        </color>
      </term>
    </config>
    
    image
  • Remove taskbar menu item's attributes: bgc=..., fgc=..., slimmenu=... (use cfg=... attribute instead).
    echo "vtm.set(id=Azure label='Azure Terminal' type=dtvt cmd='vtm -r term' cfg='<config><term><color><default fgc=0xFFffff00 bgc=bluedk/></color></term></config>')" | vtm
    
  • Add support for styled and colored underlining (SGR-4:*, SGR-58/59).
  • Fix bug with CSI subparameters parsing.
    repro:
    printf "\e[48:2::255:255:255mWhite\e[m\n"
    printf "\e[48:2:255:255:255mWhite\e[m\n"
    
vtm - v0.9.74

Published by o-sdn-o 8 months ago

Changes

  • Fix semantic block selection
vtm - v0.9.73

Published by o-sdn-o 8 months ago

Changes

  • Fix standalone terminal focus, #575
  • Render colored whitespaces instead of shaded block glyphs "▓▒░".
  • Add support for selecting semantically (OSC 133) homogeneous blocks with the mouse (4x left-click).
  • Add semantic markers for cmd.exe by default (OSC 133).
  • Built-in terminal/teletype: Change the multiple left click behavior:
    • Double left click: Select a word.
    • Triple left click: Select paragraph.
    • Quadruple left click: Select the entire scrollback buffer or semantic block (when using OSC 133).
    • Quintuple left click: Select the entire scrollback buffer.
vtm - v0.9.72

Published by o-sdn-o 8 months ago

Changes (Windows only)

  • Fix cli usage output for non-UTF-8 code pages, #572
vtm - v0.9.71

Published by o-sdn-o 8 months ago

Changes (Windows only)

  • Fix dead keys in cmd.exe for US-International kb layout, #586
vtm - v0.9.70

Published by o-sdn-o 8 months ago

Changes (Windows only)

  • Fix dead keys in cmd.exe for French AZERTY kb kayout, #568
vtm - v0.9.69

Published by o-sdn-o 8 months ago

Changes (Windows only)

  • Enable OSC 9;9 notifications for cmd.exe by default:
    If PROMPT envvar is empty or equals "$P$G", set it to:
    PROMPT="$e]9;9;$P$e\$P$G"
    
vtm - v0.9.68

Published by o-sdn-o 8 months ago

Changes

  • Make the CWD sync command template configurable via settings:
    <config>
      <term>
      	<cwdsync=" cd $P\n"/>
      </term>
    </config>
    
    Now it is possible to configure the cwdsync command template, for example, make it without prefixed whitespace to be compatible with Far Manager (https://github.com/FarGroup/FarManager/issues/798):
    pwsh:
    echo "vtm.run(id=Term cfg='<config><term cwdsync=`"cd `$P\n`"/></config>')" | vtm
    

https://github.com/FarGroup/FarManager/assets/11535558/7070f3ce-9603-48ca-b237-dbfe188ea7ae

vtm - v0.9.67

Published by o-sdn-o 8 months ago

Changes

  • Fix window focusing when left clicking in the window menu.
  • Prefix the cd command with a space to avoid command history when synching cwd.
  • Don't save space prefixed commands in cmd.exe history.
  • Log OSC9;9 notifications.
vtm - v0.9.66

Published by o-sdn-o 8 months ago

Changes

  • Force the cmd.exe's cd to always change the drive:
    C:\Temp> cd d:\temp
    d:\temp> _
    
vtm - v0.9.65

Published by o-sdn-o 8 months ago

Changes

  • Fix vtty applet defaults, #562
  • Add experimental synchronization of the current working directory for all terminal windows with the "Sync" switch enabled.
    Shell CWD Sync activation (OSC9;9):
    • Windows Command Prompt:
    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\]\$ '