- Tabbed Console starts here
- Introducing Windows Terminal
- Windows Terminal key features
- Multiple tabs
- Beautiful text
- Settings and configurability
- When can I get my hands on it?
- Wait… did you say open source?
- This sounds awesome, but why couldn’t you just improve the existing Windows Console?
- Okay, but what about contributing to an existing open source terminal/app project instead?
- I’m sold! How can I get involved?
- Using command line arguments for Windows Terminal
- Command line syntax
- Options and commands
- Command line argument examples
- Target a specific window
- Open a new profile instance
- Target a directory
- Multiple tabs
- Multiple panes
- Multiple tabs and panes
- Tab title
- Using application title (Preview)
- Tab color
- Color scheme (Preview)
- Tab focus
- Examples of multiple commands from PowerShell
- Single quoted parameters
- Escaped quotes
- Using start
Tabbed Console starts here
April 13th, 2018
[2018-06-29: Important Note: As announced in the release notes for Windows 10 Insider build 17704, Sets and Tabs will NOT ship in the next mainstream release of Windows (codenamed RS5) . Please read the first bullet under the heading “General changes, improvements, and fixes for PC” for more details.]
[2018-04-16: Updated to better reflect “Sets” terminology]
For quite a while now, the most up-voted open item in our Windows Console UserVoice has been an ask for Console to support multiple tabbed pages.
In Windows 10 Insider build 17618, the first taste of the new “Sets” feature built by the Windows Shell team (thanks all!) has arrived. Sets allow users to group multiple apps together, and switch between them using “tabs” in the title-bar. You can read more about tab sets in the Windows 10 Insiders build 17618 announcement post.
The new “Sets” UX is being applied liberally to many Windows apps and tools, including File Explorer, and … in our case … Windows Console! 🙂
So what does the Sets-enabled Console look like?
In the screenshot below, you can see that the PowerShell Console has one tab in the title-bar, indicating that this set contains one member app! To the right of this tab, is a + button that you can click to create a new tab (alternatively, you can create a new tab by hitting WIN + CTRL + T).
Here are a few keyboard shortcuts you can try out:
- Ctrl + Win + Tab – switch to next tab
- Ctrl + Win + Shift + Tab – switch to previous tab
- Ctrl + Win + T – open a new tab
- Ctrl + Win + W – close current tab.
- The Tabbed Console feature is very new and not yet finished!
- Currently, when you hit the new tab button (or hit WIN + CTRL + T), you’ll see a “new tab” page
- We’re working with the Shell Tabs team to populate the new tab page with useful links in future builds and we’d love to hear your thoughts & suggestions
- Please, submit Tabbed Console feedback via the Windows 10 Feedback Hub app (Desktop Environment –> Sets*) which will routed your feedback directly to the Shell team!
- Please DO NOT file tabbed Console bugs on the Console team’s GitHub issues page
Thanks in advance for your support & feedback! We look forward to hearing from you!
Rich Turner
Sr. Program Manager, Windows Console & Command-Line
Introducing Windows Terminal
We are beyond excited to announce Windows Terminal! Windows Terminal is a new, modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL.
Windows Terminal will be delivered via the Microsoft Store in Windows 10 and will be updated regularly, ensuring you are always up to date and able to enjoy the newest features and latest improvements with minimum effort.
Windows Terminal key features
Multiple tabs
You’ve asked and we’ve listened! The most frequently requested feature for the Terminal is multiple tab support and we are SUPER excited to FINALLY be able to deliver this key feature. You will now be able to open any number of tabs, each connected to a command-line shell or app of your choice, e.g. Command Prompt, PowerShell, Ubuntu on WSL, a Raspberry Pi via SSH, etc.
Beautiful text
The Windows Terminal uses a GPU accelerated DirectWrite/DirectX-based text rendering engine. This new text rendering engine will display text characters, glyphs, and symbols present within fonts on your PC, including CJK ideograms, emoji, powerline symbols, icons, programming ligatures, etc. This engine also renders text much faster than the previous Console’s GDI engine!
You will also have the option of using our new font! We wanted to create a fun, new, monospaced font to enhance the modern look and feel of the Terminal. Not only will this font include programming ligatures, but it will also be open sourced and have its own repository. Stay tuned for more information on the new font project!
Settings and configurability
We have connected with so many command-line users who LOVE to customize their terminals and command-line applications. Windows Terminal provides many settings and configuration options that give you a great deal of control over the Terminal’s appearance and each of the shells/profiles that you can open as new tabs. Settings are stored in a structured text file making it easy for users and/or tools to configure.
Using Terminal’s configuration mechanism, you will be able to create multiple “profiles” for each shell/app/tool you want to use, whether it be PowerShell, Command Prompt, Ubuntu, or even SSH connections to Azure or IoT devices. These profiles can have their own combination of font styles and sizes, color themes, background blur/transparency levels, etc. You can now create your own custom-styled Terminal that is personalized to your unique taste!
After we’ve shipped Windows Terminal 1.0, we plan to get started on many of the features already in our backlog, in addition to the many features you as the community are likely to add!
When can I get my hands on it?
As of today, the Windows Terminal and Windows Console have been made open source and you can clone, build, run, and test the code from the repository on GitHub: https://github.com/Microsoft/Terminal
This summer in 2019, Windows Terminal previews will be released to the Microsoft Store for early adopters to use and provide feedback.
This winter in 2019, our goal is to launch Windows Terminal 1.0 and we’ll work with the community to ensure it’s ready before we release!
[Happy Joy Gif – Giphy]
Wait… did you say open source?
Yes we did! We are excited to announce that we are open sourcing not just Windows Terminal, but also the Windows Console which hosts the command-line infrastructure in Windows and provides the traditional Console UX.
We can’t wait to work with you on improving and enhancing the Windows command-line experience!
This sounds awesome, but why couldn’t you just improve the existing Windows Console?
The primary goal of the Windows Console is to preserve backward compatibility with existing command-line tools, scripts, etc. While we’ve managed to introduce many key improvements to the Console’s features (e.g. adding VT and 24-bit color support, etc. see this blog post), we are unable to introduce further meaningful improvements to the Console’s UI without “breaking the world.”
Therefore, the time has come for a new, fresh approach.
Windows Terminal installs and runs alongside the existing in-box Windows Console application. If you run Cmd/PowerShell/etc. directly, they will start attached to a traditional Console instance in the exact same way they do today. This way, backward compatibility remains intact while providing you the option of experiencing Windows Terminal if/when you wish to do so. Windows Console will continue to ship within Windows for decades to come in order to support existing/legacy applications and systems.
Okay, but what about contributing to an existing open source terminal/app project instead?
We carefully explored this option during planning and determined our involvement in an existing project would require changing the project’s requirements and architecture in ways that would be too disruptive.
Instead, by creating a new open-source terminal application, and open-sourcing Windows Console, we can now invite the community to collaborate with us on improving the code and leveraging it in their respective projects.
We believe there is plenty of room in the market for new/different ideas about what a terminal can and should do and we aim to help the ecosystem of terminal (and related) applications flourish and grow through the introduction of new ideas, interesting approaches, and exciting innovations in this space.
I’m sold! How can I get involved?
Visit the repo at https://github.com/Microsoft/Terminal to clone, build, test, and run the Terminal! You can file bugs and share feedback with us and the community as well as fix issues and make improvements on GitHub.
Starting this summer, try installing and running Windows Terminal from the Microsoft Store. If you come across any bugs, share feedback either via the Feedback Hub or GitHub issues for detailed issues/discussions.
We are thrilled to be working with you! If you have any questions or feedback, don’t hesitate to reach out to Kayla @cinnamon_msft and/or Rich @richturn_ms on Twitter. We can’t wait to see what exciting improvements and features you make to Windows Terminal and Windows Console.
Using command line arguments for Windows Terminal
You can use wt.exe to open a new instance of Windows Terminal from the command line. You can also use the execution alias wt instead.
If you built Windows Terminal from the source code on GitHub, you can open that build using wtd.exe or wtd .
Command line syntax
The wt command line accepts two types of values: options and commands. Options are a list of flags and other parameters that can control the behavior of the wt command line as a whole. Commands provide the action, or list of actions separated by semicolons, that should be implemented. If no command is specified, then the command is assumed to be new-tab by default.
To display a help message listing the available command line arguments, enter: wt -h , wt —help , wt -? , or wt /? .
Options and commands
Below is the full list of supported commands and options for the wt command line.
Option | Description |
---|---|
—help , -h , -? , /? | Displays the help message. |
—maximized , -M | Launches the terminal maximized. |
—fullscreen , -F | Launches the terminal as full screen. |
—focus , -f | Launches the terminal in the focus mode. Can be combined with maximized . |
—window , -w | Launches the terminal in a specific window. |
Command | Parameters | Description |
---|---|---|
new-tab , nt | —profile, -p profile-name , —startingDirectory, -d starting-directory , commandline , —title , —tabColor | Creates a new tab. |
split-pane , sp | -H, —horizontal , -V, —vertical , —profile, -p profile-name , —startingDirectory, -d starting-directory , —title , —tabColor , —size, -s size , commandline , -D, —duplicate | Splits a new pane. |
focus-tab , ft | —target, -t tab-index | Focuses on a specific tab. |
move-focus , mf | direction | Move focus between panes in the given direction. Accepts one of up , down , left , right . |
When opening Windows Terminal from cmd (Command Prompt), if you want to use your custom «cmd» profile settings, you will need to use the command wt -p cmd . Otherwise, to run your default profile settings, just use wt cmd .
The -D, —duplicate parameter for split-pane is only available in Windows Terminal Preview.
Command line argument examples
Commands may vary slightly depending on which command line you’re using.
Target a specific window
The ability for the —window,-w parameter to accept window names is only available in Windows Terminal Preview.
Below are examples of how to target specific windows using the —window,-w option.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running.
Open a new profile instance
To open a new terminal instance, in this case the command will open the profile named «Ubuntu-18.04», enter:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running.
The -p flag is used to specify the Windows Terminal profile that should be opened. Substitute «Ubuntu-18.04» with the name of any terminal profile that you have installed. This will always open a new window. Windows Terminal is not yet capable of opening new tabs or panes in an existing instance.
Target a directory
To specify the folder that should be used as the starting directory for the console, in this case the d:\ directory, enter:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running.
Multiple tabs
To open a new terminal instance with multiple tabs, enter:
PowerShell uses a semicolon ; to delimit statements. To interpret a semicolon ; as a command delimiter for wt command-line arguments, you need to escape semicolon characters using backticks. PowerShell also has the stop parsing operator (—%), which instructs it to stop interpreting anything after it and just pass it on verbatim.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running.
To open a new terminal instance with multiple tabs, in this case a Command Prompt profile and a PowerShell profile, enter:
PowerShell uses a semicolon ; to delimit statements. To interpret a semicolon ; as a command delimiter for wt command-line arguments, you need to escape semicolon characters using backticks. PowerShell also has the stop parsing operator (—%), which instructs it to stop interpreting anything after it and just pass it on verbatim.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; backslash + semicolon separates commands.
Multiple panes
To open a new terminal instance with one tab containing three panes running a Command Prompt profile, a PowerShell profile, and your default profile running a WSL command line, enter:
PowerShell uses a semicolon ; to delimit statements. To interpret a semicolon ; as a command delimiter for wt command-line arguments, you need to escape semicolon characters using backticks. PowerShell also has the stop parsing operator (—%), which instructs it to stop interpreting anything after it and just pass it on verbatim.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; backslash + semicolon separates commands.
The -H flag (or —horizontal ) indicates that you would like the panes to be split horizontally. The -V flag (or —vertical ) indicates that you would like the panes split vertically.
Multiple tabs and panes
The new-tab and split-pane commands can be sequenced to get multiple tabs, each with split panes. To open a new terminal instance with two tabs, each with two panes running a Command Prompt and a WSL command line, with each tab in a different directory, enter:
PowerShell uses a semicolon ; to delimit statements. To interpret a semicolon ; as a command delimiter for wt command-line arguments, you need to escape semicolon characters using backticks. PowerShell also has the stop parsing operator (—%), which instructs it to stop interpreting anything after it and just pass it on verbatim.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; backslash + semicolon separates commands. Note to specify a Windows directory as the starting directory for wsl.exe that two backslashes \\ are required.
Tab title
To open a new terminal instance with custom tab titles, use the —title argument. To set the title of each tab when opening two tabs, enter:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; forward-slash + semicolon separates commands.
Using application title (Preview)
To open a new terminal instance allowing applications within it to set the tab title by sending title change messages, use the —useApplicationTitle flag. To suppress these messages, use the —suppressApplicationTitle flag. If none of these flags are provided, the behavior is inherited from the profile’s settings. To open a tab with title tabname that will not be overridden by the application, enter:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; backslash + semicolon separates commands.
This feature is only available in Windows Terminal Preview.
Tab color
To open a new terminal instance with custom tab colors, use the —tabColor argument. This argument overrides the value defined in the profile, but can be overridden as well using the tab color picker. In the following example, a new terminal is created with two tabs of different colors:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and \; separates commands.
When —tabColor is set for a tab, it is associated with the first pane of this tab. Hence in a tab with multiple panes, the color will be applied only if the first pane is in focus. To set the tab color for additional panes, you will need to add the —tabColor parameter to the split-pane subcommand as well. In the example below, a tab with two panes is created with tab colors specified for each pane:
Color scheme (Preview)
To open a new terminal instance with a specific color scheme (instead of the colorScheme set in the profile), use the —colorScheme argument. This argument overrides the value defined in the profile.
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and \; separates commands.
This feature is only available in Windows Terminal Preview.
Tab focus
To open a new terminal instance with a specific tab in focus, use the -t flag (or —target ), along with the tab-index number. To open your default profile in the first tab and the «Ubuntu-18.04» profile focused in the second tab ( -t 1 ), enter:
Execution aliases do not work in WSL distributions. If you want to use wt.exe from a WSL command line, you can spawn it from CMD directly by running cmd.exe . The /c option tells CMD to terminate after running and the \; backslash + semicolon separates commands.
Examples of multiple commands from PowerShell
Windows Terminal uses the semicolon character ; as a delimiter for separating commands in the wt command line. Unfortunately, PowerShell also uses ; as a command separator. To work around this, you can use the following tricks to run multiple wt commands from PowerShell. In all the following examples, a new terminal window is created with three panes — one running Command Prompt, one with PowerShell, and the last one running WSL.
The following examples use the Start-Process command to run wt . For more information on why the terminal uses Start-Process , see Using start below.
Single quoted parameters
In this example, the wt parameters are wrapped in single quotes ( ‘ ). This syntax is useful if nothing is being calculated.
Escaped quotes
When passing a value contained in a variable to the wt command line, use the following syntax:
Note the usage of ` to escape the double-quotes ( » ) around «Windows PowerShell» in the -p parameter to the split-pane parameter.
Using start
All the above examples explicitly used start to launch the terminal.
The following examples do not use start to run the command line. Instead, there are two other methods of escaping the command line:
- Only escaping the semicolons so that PowerShell will ignore them and pass them straight to wt .
- Using —% , so PowerShell will treat the rest of the command line as arguments to the application.
In both of these examples, the newly created Windows Terminal window will create the window by correctly parsing all the provided command-line arguments.
However, these methods are not recommended currently, as PowerShell will wait for the newly-created terminal window to be closed before returning control to PowerShell. By default, PowerShell will always wait for Windows Store applications (like Windows Terminal) to close before returning to the prompt. Note that this is different than the behavior of Command Prompt, which will return to the prompt immediately.