Fri. Nov 22nd, 2019

Microsoft Windows Terminal Preview 1910 releases

5 min read

Microsoft has now announced a new command-line tool called Windows Terminal that provides access to a central location in a variety of environments. For example, you can directly access PowerShell, CMD.EXE, Windows Linux subsystem, etc. Developers can use this tool to simplify their work. Windows Terminal source code is available on Github.

This new tool supports multiple tabs to connect to multiple environments or servers at the same time and allows developers to customize the theme of the tool for optimal visuals. The Windows Terminal even supports Emoji emoticons and GPU-based text rendering, which can be used to simply view content and more.

Microsoft said the tool is expected to be available to system administrators and developers next month, and that Insider Preview versions may be released in advance for public testing. Of course, Microsoft is now focusing on improving the Windows 10 developer environment, so that more developers no longer rely on Linux or macOS systems.

Changelog Preview 1910

Features

  • There’s now a setting for launching the Terminal in a specific initial position on your screen or to have it maximized when it starts up (#2817)
    • Set initialPosition to a string of the format x, y to force the terminal to launch in that position. Like, 100, 200.
    • The position specified is relative to your primary monitor. Negative values will be to the left of (x) or above (y) the primary monitor.
    • Set launchMode to maximized to request that Terminal start up maximized on the monitor it would have landed on based on its initialPosition
  • If you chose a color scheme that didn’t exist, you got the wonderful black-on-black color scheme that was excellent for readability. Now instead, you get a warning that the settings couldn’t find a valid scheme and we choose the default Campbell scheme instead so you can actually see things. (#3033)
  • Terminal now also warns you about closing many tabs when clicking the X button on the window frame, like a browser (#3049)
  • There are new keybindings, increaseFontSize and decreaseFontSize (bound by default to Ctrl+= and Ctrl+-) that help you increase and decrease the font size. (#2700)

Changes

  • We’ve upgraded to the latest version of WinUI, 2.2! There’s a bunch of improvements in our tab bar, including… (#3027)
    • … the ability to scroll your tabs with < and > buttons
    • … the ability to see all of your tabs
    • … a much more accessible color scheme
    • A KNOWN BUG where the tab bar won’t expand when you make the window wider; this is being tracked by #3300.
      • (workaround: open a new tab)
  • Performance improvements
    • We now defer rendering the cursor until we know we’re done printing text (#2960)
      • We got a little excited about updating the cursor and would spend most of our time drawing the cursor blinking on and off or moving through the buffer, even while we were writing more text. Now, we control ourselves and only draw the cursor when done emitting a segment of text. This improves drawing and buffering performance.
    • Things that change color in the middle of a line will now do so less slowly (#2937)
    • Runs of simple characters will no longer incur an expensive layout pass (#2959)
      • Re-instates text complexity check during text rendering to make simple/basic/ASCII text skip all analysis phases and render faster (less CPU!)
  • Characters of unknown width are now considered to be one cell wide (#2928)
    • Improves layout of all glyphs that are “ambiguous” per the Unicode standard by forcing them to be narrow, as most other Terminals do. This should improve table/box drawing.
    • If you see some emoji that have been crushed, smushed or smashed, please mention them by codepoint in #900.
    • Emoji are almost all ambiguous, so this is troublesome.

Bug Fixes

  • We’ll no longer crash if you open a tab, close it, then try to draw some unexpected characters in any other tab (#2928)
    • Weird enough, this was the same fix as the “ambiguous width” one above. Your homework is figuring out why!
  • Text copied to the clipboard will, in a lot more cases, have the right number of line endings (#3239)
  • Characters like : and ' will now make their way to legacy applications in a way they can understand (#3199)
    • (some old Windows applications, or new ones that are written to target consoles that have been dead and gone for tens of years, were trying to read the scancode out of a key event. Terminal wasn’t putting the right one in sometimes.)
  • correctly inform connection of resize events (#3228)
    – Fix for Visual Studio 2019 preview embedded terminal component to relay resizing events correctly.
  • Revert “Patch fix for #1360 (#2924)” (#3212)
    – See below. We tried fixing full-width characters at end-of-line and introduced a bunch of crashes, so this rolls it back to stop the crashes.
  • TermControl: force all ambiguous glyphs to be narrow (#2928)
    – Improves layout of all glyphs that are “ambiguous” per the Unicode standard by forcing them to be narrow, as most other Terminals do. This should improve table/box drawing.
  • Replace ExpandEnvironmentStrings double calling with wil helper (#3198)
    – Cleanliness fix. Turns out we don’t need to jump through 12 hoops to expand environment variables because WIL has a nice helper. This makes us use it and stop the hoop jumping.
  • Defer cursor redrawing when writing the buffer (#2960)
    – We got a little excited about updating the cursor and would spend most of our time drawing the cursor blinking on and off or moving through the buffer, even while we were writing more text. Now, we control ourselves and only draw the cursor when done emitting a segment of text. This improves drawing and buffering performance.
  • You can now use font names longer than 32 characters (#3107)
    • We used to believe that font names could only be 32 characters or less because 32 characters would be enough for anyone. Now we believe that font names can be any length they choose to be.
  • Two tabs emitting output at the same time will no longer corrupt oneanother (#3110)
  • If you have a globals object in your settings file, it will no longer cause the rest of your settings to be ignored.
  • VT fixes
    • Alt+Backspace followed by Enter will no longer result in the application receiving Alt+Enter (#2823)
    • NUL will no longer show up in the buffer (#3015)
      • Some applications spend a lot of time talking about nothing. We used to listen to them and broadcast their nothingness to the world. Now we ignore them and save everyone from having to hear that. (Applications that used NUL to waste time don’t have an effect of inserting space into the buffer anymore.)
    • The terminal will now know when the application wants to hide the cursor. It won’t do anything about it, but it’ll know. (#2829)
    • The line above, but for extended text attributes like underline, strikethrough, and italics. Remember, the Terminal won’t do anything with this newfound knowledge. (#2917)

Download