Software 42348 Published by

A new preview version of Windows Terminal is now available for testing.





Windows Terminal is a new, modern, feature-rich, productive terminal application for command-line users. It includes many of the features most frequently requested by the Windows command-line community including support for tabs, rich text, globalization, configurability, theming & styling, and more.

Features

  • IN PREVIEW TODAY: Terminal now has an optional graphical settings editor! Until it's ready for prime time, it's hidden behind a NON-DEFAULT key binding. ( #8048)
    • To bind the settings UI to Ctrl+Shift+,, add the following to your keybindings/actions.
{ "command": { "action": "openSettings", "target": "settingsUI" }, "keys": "ctrl+shift+," },
    • The settings editor will become the default action for the Settings menu item and key binding in a future release.
    • Follow along at #6800 for completion stats and community feedback!
  • Terminal now supports "Startup Actions" (thanks @Don-Vito!) ( #8770)
    • The startupActions settings key can be filled out with a WT commandline execute on launch.
    • That commandline will be run if no arguments are provided to WT.
    • You can use this to start with multiple tabs, multiple panes, or any combination of the above.
    • Examples:
      • Start with multiple tabs: "startupActions": "new-tab; new-tab"
      • Start with multiple panes: "startupActions": "split-pane -p PowerShell ; split-pane -p Ubuntu"
  • Terminal 1.6 has gained experimental support for HLSL pixel shaders (thanks @mrange!) ( #8565)
    • For a profile, set "experimental.pixelShaderEffect" to the path to an hlsl file.
    • There are some shader examples in the samples/PixelShaders directory of our repository.
    • Like the experimental "retro terminal effects" flag, using pixel shaders has a nonzero performance cost.
    • For the price of lower performance, you can have sick visual effects.
  • We've gained support for application progress reports on OSC 9;4 (originally offered by ConEmu) ( #8055)
    • Application-reported progress will be displayed in the taskbar and a new progress ring displayed in the tab ( #8133)
  • Terminal has gained two new visual bell features (available when bellStyle is set to audible or all):
    • ... flashing the taskbar ( #8215)
    • ... displaying a small bell icon in the tab until you interact with it ( #8637)
  • The italic graphic rendition (SGR 3) is now supported (thanks @j4james!) ( #8580)
    • Fonts that do not offer an italic variant will be digitally enhanced, like the bicentennial man (though with admittedly less sentience)
  • Terminal has learned a new cursor style: double underscore (thanks @rhorber!) ( #7827)
  • @hegenumo taught us the scrollToTop and scrollToBottom key binding actions ( #8459)
    • By default, they are bound to Ctrl+Shift+Home and Ctrl+Shift+End (respectively.)
  • The moveFocus pane move action has gained a new power: the ability to move to the last-used pane ( #8183)
    • This is achieved by setting "direction": "previous".
  • Tabs can now be moved left/right with the keyboard with action binding moveTab (thanks @Don-Vito!) ( #8338)
    • moveTab accepts a direction argument (enum "forward", "backward")
    • This action is not bound by default.
  • We now support ConEmu's OSC 9;9 ("set current working directory"), which a shell can use to communicate its current location (thanks @skyline75489!) ( #8330)
    • When you duplicate a tab or pane with a known working directory, the new terminal will start in that directory.
  • You can now specify a tab color for each new tab or pane on the commandline with --tabColor #rrggbb (thanks @Don-Vito!) ( #8102)
  • For those of you hacking on Terminal, we've added a new breakIntoDebugger action (not bound by default) ( #8498)
    • breakIntoDebugger only works when debugFeatures are enabled.
    • If you activate this action and no debugger is present, Terminal will exit. I don't recommend doing that.

Changes

  • Our annoying "keyboard/handwriting service" dialog is now a slightly less annoying info bar ( #8524)
  • We're finally on Microsoft.UI.Xaml 2.5.0, not a prerelease! ( #8500)
  • When you paste multiple lines, we'll give you a preview before making you decide to continue/cancel ( #8744)
  • Hyperlinks will now reveal themselves on hover even when the window isn't focused (thanks @hegenumo!) ( #8615)
  • The "Open Windows Terminal here" menu item will now (finally!) show up inside directories (thanks @hereafter!) ( #8638)
    • There was a Windows bug preventing this from working properly, but @hereafter stepped up with a VERY CLEVER workaround.
  • Manually-renamed tabs can no longer have names >1024 chars in length (thanks @Don-Vito!) ( #8433)
    • This prevents an issue where the tab renaming field would get cut off on the top/bottom (?) while renaming.
    • If you want one of these, you are free to e-mail me a 1024-word essay on why you need a tab title this long.
      • I will ignore it, but you are still free to do so.
  • You can now drag/drop more types of things on Terminal: files, links, weird VS Code tab items (?) (thanks @skyline75489!) ( #8461)
    • This also fixes a crash in drag/drop caused by those weird VS code tab items
  • No longer will your mouse cursor hang around while you're typing (thanks @Don-Vito!) ( #8629)
  • The tooltip that appears when you hover over a tab now displays a switching keyboard shortcut (thanks @Don-Vito!) ( #8810)
  • wt has learned move-focus, which lets you change pane focus while building a commandline ( #8546)
  • splitPane and wt split-pane have grown support for "size" (float 0.0 - 1.0) and --size respectively ( #8543)
  • Shift+click now supports single-character selection so that you can set your selection endpoints separately (thanks @Don-Vito!) ( #8611)
  • When most-recently-used tab switching is enabled, closing a tab will move you to the previously-used tab (thanks @Don-Vito!) ( #8610)
  • Block copy (Alt + copy) will now try harder to preserve the spacing characteristics of the copied region (thanks @Don-Vito!) ( #8579)
  • We'll now give a more accurate error message when we can't handle a bad mixed-type field in your settings (thanks @Don-Vito!) ( #8558)
  • In focus mode, closing a tab will no longer result in an unusable terminal (thanks @Don-Vito!) ( #8549)
  • We've updated the iconography in the menus to better match its purpose (thanks @hegenumo!) ( #8424)
  • Starting a search with text selected will now copy that text into the search field (thanks @Don-Vito!) ( #8521)
  • Non-existent color schemes will no longer be silently ignored in color scheme-changing actions (thanks @mpela!) ( #8147)
  • We will now warn you when you select an invalid font instead of silently using Consolas ( #8207)
    • You'd be surprised at how many reports we got from confused users who thought their flashy new fonts were simply boring.
  • The command palette, in commandline mode, will now parse and validate commands you've typed and display recent commands (thanks @Don-Vito!) ( #8515) ( #8317)
  • The command palette now supports "launchMode", which can be set to "action" or "commandLine" (thanks @Don-Vito!) ( #8382)
  • The command palette now treats Home and End more predictable (thanks @hegenumo!) ( #8194)
  • Some setting fields that used to tolerate null no longer do so ( #8175)
  • We now respond to DECID (thanks @j4james!) ( #8864)

Bug Fixes

General

  • Terminal now tries harder to scroll tabs into view when you navigate (thanks @Don-Vito!) ( #8832)
  • Right-click paste now clears any active selection (thanks @Don-Vito!) ( #8742)
  • Pastes containing \n are now properly normalized to \r ( #8634)
  • The buttons in the title bar have been cajoled into being the right colors when the app theme doesn't match the system theme (thanks @satken2!) ( #8649)
  • The initialRows/initialCols settings should work more reliably in the presence of padding (thanks @hegenumo!) ( #8584)
    • (Are we bad at math? You'd never be able to tell after this pull request!)
  • Commandline arguments to wt that conflict with wt new-tab should now be detected properly (thanks @Don-Vito!) ( #8315)
  • The tab close button now matches the tab text when you override the tab color (whoops) (thank #dcheatha!) ( #8209)
  • There were apparently still ways to make the terminal window too small. NO LONGER! (thanks @Don-Vito!) ( #8066)
  • The profile menu and command palette will now prefer your shortcut keys over the inbuilt ones (thanks @Don-Vito!) ( #8725)
  • @Don-Vito contributed an absolute heap of fixes for tab switching, the command palette, etc. ( #8653) ( #8655) ( #8609)

Performance

  • We've greatly reduced the number of transient allocations the console host (and therefore Terminal) do when printing large amounts of text ( #8617)
  • We've done likewise for text buffer initialization, startup, attribute storage, and the default conhost steady state (thanks @Austin-Lamb!) ( #8489)

Command Palette

  • @Don-Vito did a whole heap of work to make the command palette better:
    • Cleaned up the ownership of tab switching/search ( #8656)
    • Cleaned up the ownership of commandlines and tabs ( #8420)
    • Removed action dispatch from the command palette to make it more reusable ( #8628)
    • Made the palette dismiss on focus change, action dispatch, etc. so it doesn't stay on screen ( #8377)
    • Made sort case-insensitive ( #8432)

VT

  • It turns out that we had the modifier key encodings wrong for VT mouse mode for, like, four years. Now they're right ( #8379)

Reliability

  • Terminal no longer leaks pty process handles when you close tabs (thanks to @vefatica for discovering this!) ( #8707)
  • There was a race condition in pane animation that broke pane sizes. The race has been cancelled (thanks @Don-Vito!) ( #8241)
  • There was also an access violation in animated pane closure, which has also been cancelled (thanks @Don-Vito!) ( #8218)
  • We will no longer leak a smal lamount of memory while parsing VT ( #8618)
  • Some command palette/tab switcher navigation crashes have been fixed (thanks @Don-Vito!) ( #8422)
  • @j4james fixed an out-of-bounds exceptions in Set...{Buffer,Screen}Size (thanks!) ( #8309)
  • "Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience."

Behind the scenes

These are other changes that should not impact your experience.

  • We've begun some infrastructural work for "remoting" (one Terminal instance controlling another) ( #8607)
  • A number of conhost bugs have been fixed, which will be available with the next version of Windows
    • Bug in color selection + DBCS characters (thanks @j4james!) ( #8577)
    • Rendering issue with DBCS characters that are scrolled horizontally offscreen (thanks @j4james!) ( #8438)
    • Issue with horizontal viewport offset + application-mediated scrolling (thanks @j4james!) ( #8434)
  • @PokeCodec (thanks!) fixed up some annoying code health issues, like our include paths using \ instead of / ( #8205)
  • @rhorber put a little love into the close tab warning dialog to streamline its implementation (thanks!) ( #8117)
  • We've lifted some of the common logic out of the tab header to make it more reusable ( #8227)
    • @hegenumo fixed a tooltip issue that fell out of this change ( #8298)

WPF Control

  • The WPF control now better validates its size during resize operations ( #8792)
Winterminal

Windows Terminal Preview 1.6.10272.0