github directvt/vtm v0.9.99.71

latest releases: v2026.02.20, v2026.02.16, v2026.02.15...
9 months ago

GitHub all current

Note: This vtm release is not compatible with previous versions.

Changes

  • Unify event scripting and make the window menu fully customizable. See doc/settings.md#event-scripting for details.
    Example of the terminal menu window's AlwaysOnTop button declaration:
    <config>
        <terminal>
            <menu>
                <item label="  " tooltip=" AlwaysOnTop off ">
                    <script=AlwaysOnTopApplet on="LeftClick"/> <!-- The default event source is the parent object, i.e. source="item" (aka vtm.item). -->
                    <script>  <!-- A binding to update the menu item label at runtime. -->
                        <on="release: e2::form::prop::zorder" source="applet"/>
                        local is_topmost=vtm()                   -- Use event arguments to get the current state.
                        -- local is_topmost=vtm.applet.ZOrder()  -- or ask the object iteslf for the current state.
                        vtm.item.Label(is_topmost==1 and "\\x1b[38:2:0:255:0m▀ \\x1b[m" or "  ")
                        vtm.item.Tooltip(is_topmost==1 and " AlwaysOnTop on " or " AlwaysOnTop off ")
                        vtm.item.Deface()
                    </script>
                </item>
            </menu>
        </terminal>
    </config>
  • Implement full VT2D support. Now it is possible to print a solid characters higher than on cell. See doc/character_geometry.md for details.
    For example, you could print a solid 9x3 character:
    pwsh:
    "👩‍👩‍👧‍👧`u{D03C3}"
    bash:
    printf "👩‍👩‍👧‍👧\UD03C3\n"
  • Fix mouse tracking in unfocused Windows Terminal (fix unexpected drag on left click).
  • Change the default tooltip timeout to 400ms (TUI mode only).
  • Add AlwaysOnTop toggle to the top-left corner of the window.
  • Deprecate support for templates in settings.xml. It will be replaced by another templating mechanism.
  • Amplify the UI element highlighting on any mouse button press.
  • Fix crashing/freezing on window resize (deadlock).
  • Fix Win32 job breakway issue (os: Failed to fork process (5)).
  • Fix xml parsing issue (Unexpected '{token}' after '<').
  • Fix several filesystem::path encoding issues.
  • Make SetConsoleScreenBufferSize top-anchored (Win32 Console API).
  • Fix multi-session mouse handling.
  • Allow to use unique id="..." to access objects from Lua scripting.
  • Apply decimal prefixes to terminal scrollback buffer size K, M in terminal status in window footer.
  • Fix Bold+Italic Courier New 22px latin letter 'V'.
  • Fix RTL vt-rendering (reverse cluster order). See info-page.
  • Completely ignore transparent (alpha=0) null (ASCII 0x00) characters (do nothing, just move cursor forward).
    pwsh:
    "`e[2J`e[H`e[44m      `e[m`e[12H"
    "`e[1;3H`e[48:2:255:255:255:0mB`0b`0`0A`e[m`e[12H"
    bash:
    printf "\e[2J\e[H\e[44m      \e[m\e[12H"
    printf "\e[1;3H\e[48:2:255:255:255:0mB\0b\0\0A\e[m\e[12H"
  • Allow output of transparent (bga=0: bgc=0x00'FF'FF'FF) text, while leaving SGR attributes intact.
    pwsh:
    "`e[2J`e[H`e[44m      `e[m`e[12H"
    "`e[H`e[48:2:255:255:255:0mAAAAAAAAA`e[m`e[12H"
    bash:
    printf "\e[2J\e[H\e[44m      \e[m\e[12H"
    printf "\e[H\e[48:2:255:255:255:0mAAAAAAAAA\e[m\e[12H"
  • Allow nulls (ASCII 0x00) output to change SGR attributes while leaving text intact.
    pwsh:
    "😎😎😎`e[44m`b`b`b`u{0}`u{0}`u{0}`e[m"
    "`e[H`e[44mww😎qqq`e[m`e[12H"
    "`e[1;4H`e[45m`u{0}`e[m`e[12H"
    bash:
    printf "😎😎😎\e[44m\b\b\b\0\0\0\e[m"
    printf "\e[H\e[44mww😎qqq\e[m\e[12H"
    printf "\e[1;4H\e[45m\0\e[m\e[12H"
  • Fix negative coordinates in mouse reporting on Windows.
  • Clear terminal scrollback buffer except the current line.
  • Fix emoji bleed through in internal windows (type=term).
  • Fix trailing null in vtm binary executable name (on FreeBSD).
  • Implement Insert/Replace Mode IRM (FreeBSD shell requirement).
  • Fix vi text editor scrolling issues.
  • Fix SGR mouse reporting M/m when mouse moving.

Don't miss a new vtm release

NewReleases is sending notifications on new releases.