Windows Terminal Preview v0.4 Release

Kayla

August 27th, 2019

The time has come for another update to the Windows Terminal! Windows Terminal Preview v0.4 is now available in the Microsoft Store and on GitHub!

And for those interested in more detail, please review the Terminal v0.4 release notes.

Profiles.json is Now in LocalState

The profiles.json file has been moved from the RoamingState folder to the LocalState folder. This change prevents settings from automatically roaming across your devices, fixing issues such as having a font referenced on one machine that didn’t exist on the other, which would cause the Terminal to crash due to the unidentified font.

Tab Title Customizations

In our v0.3 release, we introduced the "tabTitle" setting, which allowed users to overwrite the tab title with a custom string. In v0.4, we’ve changed this functionality. Now, by default, the tab title will be set to the profile name, rather than the executable’s path. If you’d like to change what is used as the default title, setting "tabTitle" will replace the profile’s name in the tab.

This functionality is slightly different from before, because this is setting the shell title, rather than overriding the displayed title. This behavior aligns with the behavior used in the original conhost. For clarification, the shell title is the title provided by the command line application that’s being used within the instance of the profile. This means that the command line application will still be able to overwrite the tab title, which is a change from the v0.3 release.

👉 Note: The shell title is overridden in WSL distributions because the default shell configuration in many distros sets the window title before every prompt. You can change this behavior in your bash or ZSH profiles in /etc.

Settings Warning Messages

Now, when there is an issue with your profiles.json file, the Terminal will display an error message describing what is incorrect. If your profiles.json file cannot be read properly, the Terminal will use its default settings, however it will NOT overwrite your existing settings file.

AltGr is Now Detected

You are now able to have both AltGr keypresses along with "Ctrl+Alt" key bindings! The AltGr keypress is now detected before the key binding functionality, thus making it available for users.

Opening the Tab Dropdown

You can now use a key binding to open the tab dropdown. The default key binding that is shipped with this release is "Ctrl+Shift+Space" .

⭐ Info: For a list of all available key bindings, check out the documentation here!

👉 Note: If you have previously installed the Terminal and would like the new default settings, you will have to delete your current profiles.json file and relaunch the Terminal. This will generate a new settings file with the default settings. You may want to move your current profiles.json file to ensure you keep a copy of your current preferences. We are actively working on improving this experience!

New Global Setting: Copy on Select

"copyOnSelect" has been added as a new global setting in the profiles.json file. By default, this setting is set to false . When set to true , the clipboard will copy once a selection has been made within the Terminal. If false , the selection will not be copied until further action is taken (such as using a key binding that calls the copy function). This experience aligns with that on Unix terminals.

HTML Copy

When you select a range of text and copy it to your clipboard, Terminal now writes the selected text to the clipboard as styled HTML. This will allow you to paste styled console contents to other applications such as Outlook, Microsoft Word, etc. This behavior differs from conhost in that the clipboard will always copy the HTML data along with the regular text, rather than defining when you want to copy the HTML data.

The UIA bounding rectangles are now properly aligned with the text ranges on 100%-scale displays. Bounding rectangles define the regions where text is displayed on the buffer inside the Terminal. This supports panes as well as improves accessibility!

Bug Extermination

🐛 Any key binding used for copy will be passed through to the underlying command line application if there is no selection active. Therefore, for example, if you are using "Ctrl+C" to copy, it will copy if there’s a selection. Otherwise, ^C sends SIGINT and interrupts the signal, as expected.

🐛 Icons will no longer flash when switching between tabs. Additionally, the Terminal will no longer crash if the icon path is invalid.

🐛 After opening the tab dropdown, clicking outside of it will dismiss the dropdown and hide it.

🐛 The Terminal no longer re-serializes the settings on launch, so your profiles.json file will no longer be reformatted on launch.

Top Community Contributors

We have loved working with the community to help improve the Terminal experience and we’d like to call out those who have especially made an impact!

Contributors Who Opened the Most Non-Duplicate Issues

🏆 richardszalay

🏆 wolf99

🏆 j4james

Contributors Who Created the Most Merged Pull Requests

🏆 j4james

🏆 fcharlie

🏆 metathinker

🏆 mcpiroman

🏆 german-one

🏆 j4james

Feedback

If you have any questions, feel free to reach out to Kayla (@cinnamon_msft) or Rich (@richturn_ms) on Twitter. If you have any feature requests or have found any bugs, file them on GitHub!

Until next time! 😊