September 26th, 2023

Windows Terminal Preview 1.19 Release

Christopher Nguyen
Product Manager II, Windows Terminal

The Windows Terminal team is back with a new preview release! Windows Terminal Preview 1.19 introduces new features such as Broadcast Input, Web Search, the Suggestions UI and more!

We are also updating Windows Terminal to version 1.18 which will include all of the features from this previous blog post. As always, you can install Windows Terminal and Windows Terminal Preview from the Microsoft Store, from the GitHub releases page, or by using winget.

Let’s talk about these new Windows Terminal Preview 1.19 features and how to set them up!

Broadcast Input

Broadcast Input allows the contents of one terminal pane to be broadcasted to all the other panes in a tab. To turn on Broadcast Input, select “Toggle broadcast input to all panes” in the Command Palette. You can also set Broadcast Input as a keybinding action as well.

We would like to extend a huge thanks to our community members for bringing this feature request to our attention!

Input from one terminal pane being broadcasted over all other terminal panes in the window

Web Search

Web Search has been added as an option to our right click context menu. Web Search allows a user to do a web search on selected text in their terminal. Shoutout to @mpela81 for this community contribution!

To enable the right-click context menu, add the following defaults object to profiles in your settings.json file:

    "profiles": 
    {
        "defaults": 
        {
            "experimental.rightClickContextMenu": true
        },
        ...

If you highlight and right-click on text, you will be able to do a web search on that highlighted text by clicking “Web Search” in the right-click context menu. This will open up a browser window (or new tab if you have an existing browser window open) with your web search results.

Web Search in Windows Terminal with Bing

By default, Web Search will do a search on Bing. If you want Web Search to query another URL, then add "searchWebDefaultQueryUrl" to your settings.json file as a global variable and set it to different URL. Below is the default value for this setting as an example:

"searchWebDefaultQueryUrl": "https://www.bing.com/search?q=%22%s%22"

This feature is also available as a webSearch action. You can customize this action to launch any search engine by specifying the queryUrl. %s will be replaced with your query.

✨ Emoji Support in Command Prompt ✨

That’s right! You are now able to input emojis in your Command Prompt ❤️

Don’t believe me? Throw some emojis in your Command Prompt and find out 😉

Emojis in Command Prompt

Unfocused Acrylic

We now have unfocused acrylic support! This means that unfocused windows of Windows Terminal will appear acrylic instead of opaque. Thank you @Jaswir for this community contribution!

Here is a GIF of unfocused acrylic in action!

A comparison of acrylic in Windows Terminal and Notepad

Here’s a snippet of the JSON used for these settings:

"opacity": 85,
"useAcrylic": true

Suggestions UI

The Suggestions UI is a new UI element that provides different types of text suggestions to the user. These suggestions can be anything from command history, saved commands, and more!

This Suggestions UI requires Shell Integration to be enabled in the terminal.

Enabling Shell Integration

Enabling Shell Integration is a two-step process.

1) Enable shell integration marks in settings.json file.

2) Edit your prompt to make sure the terminal gets told about the CWD and mark up the prompt with appropriate marks. This is done differently in PowerShell and Command Prompt.

For more information on enabling shell integration, check out our tutorial on enabling shell integration.

Using Command History in the Suggestions UI

Once you have enabled Shell Integration, you will want to create a new showSuggestions action that will show the Suggestions UI with your command history as its suggestions source. This should be done in your settings.json file in actions. Here is an example:

    "actions": 
    [
        {
            "command": 
            {
                "action": "showSuggestions",
                "source": "commandHistory",
                "useCommandline": true
            },
            "keys": "ctrl+h"
        }
    ],

In this example, we have created a new action that allows us to show the Suggestions UI and populate suggestions based on the our command history. This action uses the Ctrl+H keybinding but feel free to change it to use whatever keybinding you want!

And here is the result! In this image, you will see the Suggestions UI pop up with the commands that I just ran (ls and git status)

Suggestions UI using command history as a suggestions source in PowerShell

Using SendInput Actions in the Suggestions UI

Do you like writing out long commands and having to remember every single argument and flag for them? Because I don’t 🙃

Luckily, the Suggestions UI can also use sendInput actions as a suggestions source. A sendInput action is an action that sends text input to the shell. If we create a bunch of sendInput actions for our favorite commands, then we will no longer need to type them out every time we use them.

To enable the Suggestions UI to use your command history and your sendInput actions as a suggestions source, actions in your settings.json file should look like this.

        {
            "command": 
            {
                "action": "showSuggestions",
                "source": "all",
                "useCommandline": true
            },
            "keys": "ctrl+y"
        },

In this example, we have created a new showSuggestions action that allows use all the suggestion sources available to the Suggestions UI including command history and our sendInput actions. This action uses the Ctrl+Y keybinding but feel free to change it to use whatever keybinding you want!

Of course, we will need some sendInput actions for our Suggestions UI. In the example below, I added some sendInput actions for git scenarios in my settings.json under the showSuggestions action:

"actions": 
    [
        {
            "command": 
            {
                "action": "showSuggestions",
                "source": "all",
                "useCommandline": true
            },
            "keys": "ctrl+y"
        },
        {
            "command": 
            {
                "action": "sendInput",
                "input": "git commit -m \"\"\u001b[D"
            },
            "name": "commit"
        },
        {
            "command": 
            {
                "action": "sendInput",
                "input": "git checkout -b"
            },
            "name": "new branch"
        },
        {
            "command": 
            {
                "action": "sendInput",
                "input": "git fetch & git pull\r"
            },
            "name": "fetch&pull"
        },
        {
            "command": 
            {
                "action": "sendInput",
                "input": "git merge origin/main\r"
            },
            "name": "merge main"
        },
        {
            "command": 
            {
                "action": "sendInput",
                "input": "git log -10 --pretty=oneline --abbrev-commit\r"
            },
            "name": "log -10"
        }
    ],

The above will allow your Suggestions UI to use your command history and those sendInput actions as a suggestion source:

Suggestions UI using command history and sendInput actions as a suggestions source in PowerShell

Experimental Shell Completion Menu

The Suggestions UI can also surface suggestions from Predictors in PowerShell 7. This will require an additional bit of work for setup. You will need to first modify your PowerShell profile with a shell completion protocol and add a few things to your settings.json file.

We are currently iterating on different shell completion protocols to allow users to enable this feature easier. For more information on how to set this feature up, please check out the Wiki on Experimental Shell Completion Menu in our GitHub repository.

Suggestions UI using PowerShell Predictors as a suggestions source

If you want to get up-to-date information or participate in the discussions of how we are working to improve this experience, then please check out this feature request on our GitHub repository.

Usability Updates

⚡ We will now display an indicator in the tab of any disconnected/closed/crashed application. You can right-click the tab to restart it! (Thanks @mpela81!)

⚡ The number of search results and positions of hits are now shown in the scrollbar (thanks @Don-Vito! and @zadjii-msft!)

⚡ Added a --appendCommandLine flag for appending to a command (thanks @hanpuliu-charles!)

⚡ Scroll marks can be cleared by clear, cls, Clear-Host, and other clear buffer actions!

⚡ Added an option to default to show an icon in tab, hide tabicon, or make an icon in the tab monochrome (thanks @bundgaard!)

⚡ Added support for Erase Color Mode (thanks @j4james!)

⚡ Users can now use an action to display a toast containing the Terminal’s “virtual” CWD.

⚡ Allow inheriting env vars from wt again and added other env var changes.

⚡ Added an experimental experimental.moveCursorWithMouse setting for moving the cursor with the mouse. This requires Shell Integration to be enabled.

⚡ Added support for setting the window frame color with $theme.window.frame, .unfocusedFrame, and experimental.rainbowFrame (I HIGHLY recommend trying out the 🌈experimental.rainbowFrame🌈 setting!)

Performance Improvements

🔥 We rewrote COOKED_READ_DATA to improve Windows Terminal performance.

🔥 We rewrote resize with reflow (TextBuffer::Reflow) so it’s faster and more correct.

🔥 Reduced GdiEngine input latency.

🔥 Reduced the cost of resetting row attributes.

🔥 The text buffer is now vectorized committed on demand and faster than before.

🔥 The whole Settings UI library will only load when you open the Settings UI. This change saves memory.

Miscellaneous Improvements

🛠️ Added support for ITU’s T.416 – ODA SGR (38/48) sequence (thanks again @tusharsnx!)

🛠️ You can now copy text without dismissing the text selection by setting dismissSelection to false (thanks @gonzalo-garcian!)

🛠️ Improved Run-Test.ps1‘s maintainability and readability (thanks @Jvr2022!)

🛠️ Removed telemetry for VT sequences (thanks @j4james!)

Accessibility Improvements

🛠️ You can now run profiles from the Add tab menu as an admin without a keyboard (thanks @jamespack!)

🛠️ The CommandKeyChord in the Command Palette now has a background. This prevents certain accent colors from rendering the KeyChords in an unreadable color (thanks @RickleAndMortimer!)

🛠️ Settings now groups elements in their containers for screen readers

🛠️ Screen reader users can now determine which color scheme is the current default

🛠️ Default Terminal and Color Scheme ComboBoxes no longer crop at 200% text scale

🛠️ We’ve added automation property names to the ‘Delete Color Scheme’ button

Bug Fixes

🐛 Default Terminal and Color Scheme ComboBoxes no longer crop at 200% text size.

🐛 Fixed horizontal scrolling bugs when using AtlasEngine and DxEngine.

🐛 Fixed VtEngine hang when resizing while scrolling.

🐛 Fixed a crash when duplicating tabs with elevate:true

🐛 Fixed some AtlasEngine Windows 10 bugs.

🐛 RIS now re-enables win32 and focus events (thanks @j4james!)

Top contributors

We love working with the community and recognizing those who made an impact for each release. Here are the community members who helped out for this one!

Contributors who created the most merged pull requests

🏆 tusharsnx

🏆 j4james

🏆 mpela81

Contributors who opened the most non-duplicate issues

🏆 ClaireCJS

🏆 scott-xu

🏆 j4james

Contributors who provided the most comments on pull requests

🏆 j4james

🏆 tusharsnx

🏆 Jaswir

I would also like to give additional recognition to @gonzalo-garcian, @mataha, @yan12125, and @mdgrs-mei for their help on documentation, code health, grammar, spelling, workflow security and maintenance!

Thank you!

We hope you enjoy this latest release of Windows Terminal Preview! More information on these new features can be found on our docs site and if you find any bugs or have feature requests, feel free to file them on GitHub. If you have any questions you can reach out to Christopher Nguyen (@nguyen_dows) on Twitter.

Thanks again for the continued support!

2023 Signatures

Author

Christopher Nguyen
Product Manager II, Windows Terminal

5 comments

Discussion is closed. Login to edit/delete existing comments.

  • Petri X

    Is it only me who has lost the possibility to disable the "line wrapping selection" on terminals? Sometimes (read surprising often) I would like to copy text, e,g. from PS output. Instead rewrite the "ft identity" I just like to copy one column.

    Other option to be added into settings could be "option search..". When you do not know under which menu your settings is, it would be nice if you could search it.

    Read more
  • JC Kodel

    Why we are always forced to use bing when searching? This feature is as useless as Bing is.

    We don’t like Bing.

    We like Google.

    So, #*#$& you, Microsoft.

    • Jorge Morales Vidal

      You can customize it, by default it uses Bing, but you can change it. The search engine can also be changed inside Microsoft Edge by the way.

      • Greg Wojan

        Please don’t feed the troll… 😉

  • henry-js

    At last! My favourite dev blog