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!
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.
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 😉
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!
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
)
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:
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.
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
🏆 j4james
🏆 mpela81
Contributors who opened the most non-duplicate issues
🏆 scott-xu
🏆 j4james
Contributors who provided the most comments on pull requests
🏆 j4james
🏆 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!
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.
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.
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.
Please don’t feed the troll… 😉
At last! My favourite dev blog