October 15th, 2020

Windows Terminal Tips and Tricks

Kayla Cinnamon
Senior Product Manager

Windows Terminal comes with a lot of features that allow you to customize it and interact with it in a way that feels most comfortable to you. Let’s run through some tips and tricks that could help you set up your terminal in a way that’s perfect for you. At the time of this blog post, Windows Terminal is on version 1.3 and Windows Terminal Preview is on version 1.4.

On first launch

When you first install Windows Terminal, you will be greeted with a Windows PowerShell prompt. Windows Terminal ships with Windows PowerShell, Command Prompt, and Azure Cloud Shell profiles by default.

In addition to these profiles, if you have any Windows Subsystem for Linux (WSL) distributions installed, the terminal will automatically create profiles for those distros as well. If you would like to install additional WSL distros on your machine, you can do so after installing terminal and on your next terminal launch, the profiles for those distros should automatically appear. These profiles will have Tux as their icon, however you can change the icon of the distro in your settings to match whichever distro you have. You can find more information about WSL on the WSL docs site.

👉 Note: You will have to download the distro icons as they do not come shipped inside the terminal.

Customization

Windows Terminal comes with a large set of default settings, including color schemes and keyboard shortcuts. If you’d like to view the default settings file, you can hold Alt and click on the Settings button inside the dropdown menu.

Global profile settings

Windows Terminal provides you the option of applying a setting to every profile without having to duplicate the setting for each profile entry. This can be done by adding a setting inside the "defaults" array inside the "profiles" object. A list of all possible profile settings can be found on the Profile settings page on our docs site.

"profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "fontFace": "Cascadia Code"
        },
        "list":
        []
    }

Custom color schemes

Windows Terminal comes with an assortment of color schemes by default. However, there are unlimited possibilities when it comes to color schemes. A great place to find additional terminal schemes is terminalsplash.com.

If you’d like to create your own color scheme, terminal.sexy is a great tool for creating and visualizing your own color schemes.

💡 Tip: You can match your custom color scheme to a background image by using the PowerToys color picker to grab hex codes for colors to use inside your scheme. PowerToys can be installed using winget with winget install powertoys.

Image pt color picker

Custom command line

You can give your command line some style with Oh my Posh and Terminal-Icons. These tools allow you to customize what your prompt looks like with colors, glyphs, and emojis. To get Oh my Posh with Posh-Git and PSReadline up and running, you can follow this tutorial.

Oh my Posh recently came out with Oh my Posh 3, which has a lot more customization options and is not only exclusive to PowerShell. After going through the tutorial linked above, you can upgrade to V3 with the following command:

Update-Module -Name oh-my-posh -AllowPrerelease -Scope CurrentUser

Image powerline powershell

You can add a bit more flair to your shell by adding custom icons with Terminal-Icons. The image below is also using a custom Posh theme to add emojis to the prompt line.

👉 Note: You will need to set your font to a Nerd Font in order to get the Terminal Icons to appear.

Image terminal icons

Old school fonts

For those of you who are fans of the retro terminal effect, a great place to find old school fonts is at https://int10h.org/oldschool-pc-fonts/.

Image terminal retro font

Places for background images

Desktop wallpapers often look great inside Windows Terminal as background images. Some great places to find background images are Windows Themes as well as WallpaperHub. Windows Terminal supports both images and gifs for background images.

Another popular option is placing the logo of the shell you are using as the background image, to help identify which shell you are in. You can set where the background image is placed with "backgroundImageAlignment" in your settings. More information on background image settings can be found on our docs site.

Functionality

wt.exe command line arguments

You can launch your terminal in a specific configuration by using the wt.exe command. Some options you can set are tab and pane arrangements as well as their starting directories and profiles. You can save a custom command as a shortcut and pin it to your taskbar to open your desired configuration.

If you use the wt.exe command inside the command palette, it will take effect in your current terminal window, rather than spinning up a new terminal instance.

This example will open the PowerShell profile in the current working directory in a new tab with a vertical pane running your default profile.

wt -p "PowerShell" -d . ; split-pane -V

Full documentation about wt command line arguments can be found on our docs site.

Panes

Windows Terminal has pane support for profiles. You can open a new pane of a profile by either holding Alt and clicking on the profile in the dropdown, or by using the following keyboard shortcuts:

Automatic pane split of current profile

Alt+Shift+D

Horizontal pane split of default profile

Alt+Shift+Minus

Vertical pane split of default profile

Alt+Shift+Plus

You can also move focus around your panes by holding Alt and using the arrow keys. Lastly, you can resize your panes by holding Alt+Shift and using the arrow keys. You can find more information about panes on our docs site.

Image terminal panes

Copy and paste

In Windows Terminal, the default keyboard shortcuts for copy and paste are Ctrl+C and Ctrl+V, respectively. If you do not have a selection, Ctrl+C will act as normal as the break command.

You can customize which keys you’d like to copy and paste with by editing the "copy" and "paste" key bindings. If you delete these key bindings from your settings.json, the terminal will default to Ctrl+Shift+C and Ctrl+Shift+V. This can be especially helpful for WSL users who need Ctrl+C and Ctrl+V free to use for their shells.

You can also choose which formatting is copied to your clipboard along with newline characters with the "copyFormatting" and "singleLine" actions associated with the copy command. Full documentation on clipboard integration commands can be found on our docs site.

Defining key bindings and actions

A large portion of the customizable properties inside Windows Terminal come from key bindings and actions. Commands inside the "actions" array will automatically be added to your command palette. If you’d like to also use them with key bindings, you can add "keys" to them to invoke them with the keyboard. A full list of every possible command can be found on the Actions page of our docs site.

Send input commands

Windows Terminal gives you the ability to send input to your shell with a key binding. This can be done with the following structure inside your "actions" array.

{ "command": {"action": "sendInput", "input": ""}, "keys": "" }

Sending input to the shell with a keyboard shortcut can be useful for commands you run often. One example would be clearing your screen:

{ "command": {"action": "sendInput", "input": "clear\r"}, "keys": "alt+k" }

Navigating to the parent directory with a key binding may also be helpful.

{ "command": {"action": "sendInput", "input": "cd ..\r"}, "keys": "ctrl+up" }

You can also use this functionality to run builds or test scripts.

WSL starting directory

As of now, Windows Terminal defaults to setting WSL profiles’ starting directory as the Windows user profile folder. To set your WSL profile to start in the ~ folder, you can add the following line to your profile settings, replacing DISTRONAME and USERNAME with the appropriate fields.

"startingDirectory": "//wsl$/DISTRONAME/home/USERNAME"

Cheers

We hope you learned a few tips and tricks about Windows Terminal throughout this blog post. We are currently planning another release for the month of November, so keep your eyes peeled for that one! If you have any questions or feedback, feel free to reach out to Kayla (@cinnamon_msft) on Twitter. For more information about Windows Terminal, you can check out our docs site.

Image 08 2020 signatures

Author

Kayla Cinnamon
Senior Product Manager

Product Manager for Dev Home, Microsoft PowerToys, and Windows Developer Experiences, formerly Windows Terminal and Cascadia Code.

6 comments

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

  • Kyle Garret

    I've got to say, as a "Linux guy" I've found Windows Terminal an absolutely amazing asset when working in Windows. It's great to see Microsoft finally embracing the command line after spending years hoping it would just die. I'm probably in the minority, but personally I've set it up to load fullscreen automatically on login on my work laptop - I spend the vast majority of my time inside a terminal, so why the...

    Read more
  • Piotr Szlazak

    For WSL profiles, to start session in my homedir, I’m adding following commandline (for every profile separately):

    "commandline" : "wsl ~"
  • Yogi Prasetyawan

    That’s article is amazing cause i can maintenance my project (VexaGame) using windows server with this article

  • Rob Cannon

    I think this is my favorite post of the year. Thanks!

  • Hekaton Kheires

    Around 20 years ago, thanks to gentoo/wine, I managed intalling starcraft onto an old pc, with HW way below the minimum requirements. It was a moment when I abandoned windows as my OS of choice. True, I still used it for work (office primarily); but on my personal laptop, I run exclusively different flavors of linux. When I got some dinero, I switched to macbook pro and installed gentoo-prefix. Now, with the advent of WSL...

    Read more
  • Funakoshi Kazuhiro

    More precisely, default copy and paste also has “Ins” alternative version. I guess you forget the “Ins” version because your Surface Pro doesn’t have Ins key xD

'; block.insertAdjacentElement('beforebegin', codeheader); let button = codeheader.querySelector('.copy-button'); button.addEventListener("click", async () => { let blockToCopy = block; await copyCode(blockToCopy, button); }); } }); async function copyCode(blockToCopy, button) { let code = blockToCopy.querySelector("code"); let text = ''; if (code) { text = code.innerText; } else { text = blockToCopy.innerText; } try { await navigator.clipboard.writeText(text); } catch (err) { console.error('Failed to copy:', err); } button.innerText = "Copied"; setTimeout(() => { button.innerHTML = '' + svgCodeIcon + ' Copy'; }, 1400); }