This is just a very quick blog post to share my customized Windows Terminal settings.json, and it should give you an idea of how you can customize the Windows Terminal for your needs. The new Windows Terminal for Windows 10 which is open-source and you currently can get it from the Windows Store. The new Windows Terminal lets you run different shells like Windows PowerShell, PowerShell 7, Command Prompt, WSL, and also WSL 2. It provides a couple of improvements like; multiple tabs support, GPU accelerated DirectWrite/DirectX-based text rendering engine, and much more. For me, one of the biggest advantages are the advanced customizing and configuration options, which allow you to configure the Windows Terminal settings using a profiles.json file.
Windows Terminal 1.0 was released on May 19, you can find more documentation here on Microsoft Docs.
I already shared a couple of blog posts on how you can customize your Windows Terminal experience:
- Add a PowerShell Remote Session in Windows Terminal
- Change the Windows Terminal Theme from Light to Dark
- How to Change the Windows Terminal Background Image
- How to open Windows Terminal from Command Prompt or Run
- New Microsoft Code and Terminal Font Cascadia Code
And here is my personal customized Windows Terminal settings profiles.json including the shells, my color themes, and my key bindings.
// This file was initially generated by Windows Terminal 0.11.1121.0 // It should still be usable in newer versions, but newer versions might have additional // settings, help text, or changes that you will not see unless you clear this file // and let us generate a new one for you. // To view the default settings, hold "alt" while clicking on the "Settings" button. // For documentation on these settings, see: https://aka.ms/terminal-documentation { "$schema": "https://aka.ms/terminal-profiles-schema", "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", // You can add more global application settings here. // To learn more about global settings, visit https://aka.ms/terminal-global-settings // If enabled, selections are automatically copied to your clipboard. "copyOnSelect": false, // If enabled, formatted data is also copied to your clipboard "copyFormatting": false, // A profile specifies a command to execute paired with information about how it should look and feel. // Each one of them will appear in the 'New Tab' dropdown, // and can be invoked from the commandline with `wt.exe -p xxx` // To learn more about profiles, visit https://aka.ms/terminal-profile-settings "profiles": { "defaults": { // Put settings here that you want to apply to all profiles. "cursorShape": "vintage" }, "list": [ { // Make changes here to the powershell.exe profile. "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false, "fontFace": "Consolas", "colorScheme": "PowerShellTom", "useAcrylic": true, "acrylicOpacity": 0.8 }, { // Make changes here to the cmd.exe profile. "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "Command Prompt", "commandline": "cmd.exe", "hidden": false, "fontFace": "Consolas", "experimental.retroTerminalEffect": true, "foreground": "#00FF00" }, { "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}", "hidden": false, "name": "PowerShell ⚡", "source": "Windows.Terminal.PowershellCore", "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/RobotwithBackgroundVibrantInkTom.jpg", "backgroundImageOpacity" : 0.1, "colorScheme": "VibrantTom", "useAcrylic": true, "fontFace": "Cascadia Code", "acrylicOpacity": 0.8 }, { "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}", "hidden": false, "name": "Ubuntu-18.04 🐳", "source": "Windows.Terminal.Wsl", "colorScheme": "UbuntuLegit", "fontFace": "Cascadia Code", "acrylicOpacity": 0.8, "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/RobotwithBackground.jpg", "useAcrylic": true, "backgroundImageOpacity" : 0.1 }, { "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}", "hidden": false, "name": "Ubuntu-20.04 🐳", "source": "Windows.Terminal.Wsl", "colorScheme": "UbuntuLegit", "fontFace": "Cascadia Code", "acrylicOpacity": 0.8, "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/RobotwithBackground.jpg", "useAcrylic": true, "backgroundImageOpacity" : 0.1 }, { "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", "hidden": false, "name": "Azure Cloud Shell ☁", "source": "Windows.Terminal.Azure", "colorScheme": "Dracula", "acrylicOpacity": 0.8, "useAcrylic": true }, { // Connects to a remote machine using SSH "guid": "{3b6e258c-bd69-43af-9365-69b153b0ece6}", "name": "SSH Thomas AzureVM 💻", "tabTitle": "SSH Thomas Maurer AzureVM", "commandline": "ssh [email protected]", "icon": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/AzureVMIcon32.png", "colorScheme": "UbuntuLegit", "fontFace": "Cascadia Code", "acrylicOpacity": 0.5, "useAcrylic": true }, { // Connects to a remote machine using Windows PowerShell "guid": "{726893ad-458f-4bf5-9cbf-7108d1f9941f}", "name": "PS Thomas AzureVM 💻", "tabTitle": "PS Thomas Maurer AzureVM", "commandline": "powershell.exe -noprofile -noexit -Command Enter-PSSession -ComputerName azurevmps.westeurope.cloudapp.azure.com -credential thomas", "icon": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/AzureVMIcon32.png", "colorScheme": "Tango Dark" }, { // Connects to a remote machine using PowerShell 7 "guid": "{d5f95abc-9fef-41e2-b3c5-6400ce8324b5}", "name": "PS7 Thomas AzureVM", "tabTitle": "PS7 Thomas Maurer AzureVM 💻", "commandline": "pwsh.exe -NoProfile -NoExit -Command Enter-PSSession -ComputerName azurevmps.westeurope.cloudapp.azure.com -credential thomas", "icon": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/AzureVMIcon32.png", "colorScheme": "Tango Dark" }, { // Starts and Connects to a Docker Container PowerShell 7 "guid": "{d5f95abc-9fef-41e2-b3c5-6400ce8324b5}", "name": "Azure PowerShell Container", "tabTitle": "Azure PowerShell Container 💻", "commandline": "pwsh.exe -NoProfile -NoExit -Command docker start -ai stupefied_mendel", "icon": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/DockerIcon.png", "colorScheme": "Tango Dark" }, { "guid": "{d6da893b-255b-44f2-92d9-7c7413096de2}", "name": "PowerShell Light", "tabTitle": "PowerShell Light 💻", "commandline": "pwsh.exe -NoExit", "backgroundImage": "C:/Users/thoma/OneDrive/Pictures/Me/Thomas Maurer Logos 2016/WindowsTerminal/RobotwithBackgroundVibrantInkTom.jpg", "backgroundImageOpacity" : 0.1, "colorScheme": "VibrantTomLight", "useAcrylic": true, "fontFace": "Cascadia Code", "acrylicOpacity": 0.9 }, { "guid": "{a3a2e83a-884a-5379-baa8-16f193a13b21}", "hidden": false, "name": "PowerShell 7 Preview", "source": "Windows.Terminal.PowershellCore" } ] }, // Add custom color schemes to this array. // To learn more about color schemes, visit https://aka.ms/terminal-color-schemes "schemes": [ { // Color Scheme: VibrantInk "background" : "#000000", "black" : "#878787", "blue" : "#44B4CC", "brightBlack" : "#555555", "brightBlue" : "#0000FF", "brightCyan" : "#19D1D8", "brightGreen" : "#81EC0D", "brightPurple" : "#FF00FF", "brightRed" : "#FF0000", "brightWhite" : "#E5E5E5", "brightYellow" : "#FFD93D", "cyan" : "#19D1D8", "foreground" : "#FFFFFF", "green" : "#CCFF04", "name" : "VibrantInk", "purple" : "#9933CC", "red" : "#FF6600", "white" : "#F5F5F5", "yellow" : "#FFD93D" }, { // Color Scheme: VibrantTom "background" : "#16171D", "black" : "#878787", "blue" : "#44B4CC", "brightBlack" : "#E373C8", "brightBlue" : "#0000FF", "brightCyan" : "#19D1D8", "brightGreen" : "#81EC0D", "brightPurple" : "#FF00FF", "brightRed" : "#FF0000", "brightWhite" : "#E5E5E5", "brightYellow" : "#FFD93D", "cyan" : "#19D1D8", "foreground" : "#FFFFFF", "green" : "#CCFF04", "name" : "VibrantTom", "purple" : "#9933CC", "red" : "#FF6600", "white" : "#F5F5F5", "yellow" : "#FFD93D" }, { // Color Scheme: PowerShellTom "background" : "#012456", "black" : "#000000", "blue" : "#0000ff", "brightBlack" : "#AAAAAA", "brightBlue" : "#44B4CC", "brightCyan" : "#19D1D8", "brightGreen" : "#81EC0D", "brightPurple" : "#FF00FF", "brightRed" : "#FF0000", "brightWhite" : "#E5E5E5", "brightYellow" : "#FFD93D", "cyan" : "#19D1D8", "foreground" : "#FFFFFF", "green" : "#00ff00", "name" : "PowerShellTom", "purple" : "#9933CC", "red" : "#FF6600", "white" : "#F5F5F5", "yellow" : "#FFD93D" }, { // Color Scheme: Ubuntu "background": "#2C001E", "black": "#EEEEEC", "blue": "#268BD2", "brightBlack": "#002B36", "brightBlue": "#839496", "brightCyan": "#93A1A1", "brightGreen": "#586E75", "brightPurple": "#6C71C4", "brightRed": "#CB4B16", "brightWhite": "#FDF6E3", "brightYellow": "#657B83", "cyan": "#2AA198", "foreground": "#EEEEEC", "green": "#729FCF", "name": "Ubuntu", "purple": "#D33682", "red": "#16C60C", "white": "#EEE8D5", "yellow": "#B58900" }, { // Color Scheme: UbuntuLegit "background": "#2C001E", "black": "#4E9A06", "blue": "#3465A4", "brightBlack": "#555753", "brightBlue": "#729FCF", "brightCyan": "#34E2E2", "brightGreen": "#8AE234", "brightPurple": "#AD7FA8", "brightRed": "#EF2929", "brightWhite": "#EEEEEE", "brightYellow": "#FCE94F", "cyan": "#06989A", "foreground": "#EEEEEE", "green": "#300A24", "name": "UbuntuLegit", "purple": "#75507B", "red": "#CC0000", "white": "#D3D7CF", "yellow": "#C4A000" }, { // Color Scheme: Dracula "background" : "#282A36", "black" : "#21222C", "blue" : "#BD93F9", "brightBlack" : "#6272A4", "brightBlue" : "#D6ACFF", "brightCyan" : "#A4FFFF", "brightGreen" : "#69FF94", "brightPurple" : "#FF92DF", "brightRed" : "#FF6E6E", "brightWhite" : "#FFFFFF", "brightYellow" : "#FFFFA5", "cyan" : "#8BE9FD", "foreground" : "#F8F8F2", "green" : "#50FA7B", "name" : "Dracula", "purple" : "#FF79C6", "red" : "#FF5555", "white" : "#F8F8F2", "yellow" : "#F1FA8C" }, { // Color Scheme: VibrantInkTom Light "background" : "#EEEEEE", "black" : "#878787", "blue" : "#44B4CC", "brightBlack" : "#595e68", "brightBlue" : "#0000FF", "brightCyan" : "#19D1D8", "brightGreen" : "#3f953a", "brightPurple" : "#FF00FF", "brightRed" : "#FF0000", "brightWhite" : "#E5E5E5", "brightYellow" : "#FF6600", "cyan" : "#44B4CC", "foreground" : "#16171D", "green" : "#3f953a", "name" : "VibrantTomLight", "purple" : "#9933CC", "red" : "#FF6600", "white" : "#F5F5F5", "yellow" : "#FFD93D" }, { "name": "OneDark", "black": "#1e2127", "red": "#e06c75", "green": "#98c379", "yellow": "#d19a66", "blue": "#61afef", "purple": "#c678dd", "cyan": "#56b6c2", "white": "#abb2bf", "brightBlack": "#5c6370", "brightRed": "#e06c75", "brightGreen": "#98c379", "brightYellow": "#d19a66", "brightBlue": "#61afef", "brightPurple": "#c678dd", "brightCyan": "#56b6c2", "brightWhite": "#ffffff", "background": "#1e2127", "foreground": "#abb2bf", "cursorColor": "#aaaaaa" }, { "name": "OneLight", "black": "#000000", "red": "#de3e35", "green": "#3f953a", "yellow": "#d2b67c", "blue": "#2f5af3", "purple": "#950095", "cyan": "#3f953a", "white": "#bbbbbb", "brightBlack": "#000000", "brightRed": "#de3e35", "brightGreen": "#3f953a", "brightYellow": "#44B4CC", "brightBlue": "#2f5af3", "brightPurple": "#a00095", "brightCyan": "#3f953a", "brightWhite": "#aaaaaa", "background": "#f9f9f9", "foreground": "#2a2c33", "cursorColor": "#aaaaaa" } ], // Add custom keybindings to this array. // To unbind a key combination from your defaults.json, set the command to "unbound". // To learn more about keybindings, visit https://aka.ms/terminal-keybindings "keybindings": [ // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json. // These two lines additionally bind them to Ctrl+C and Ctrl+V. // To learn more about selection, visit https://aka.ms/terminal-selection { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" }, { "command": "paste", "keys": "ctrl+v" }, // Press Ctrl+Shift+F to open the search box { "command": "find", "keys": "ctrl+f" }, // Press Alt+Shift+D to open a new pane. // - "split": "auto" makes this pane open in the direction that provides the most surface area. // - "splitMode": "duplicate" makes the new pane use the focused pane's profile. // To learn more about panes, visit https://aka.ms/terminal-panes { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "ctrl+shift+t" }, // Open New Tab {"command":"newTab", "keys": "ctrl+t"} ] }
You can also find my customized Windows Terminal Settings settings.json here on GitHub Gist. I hope this helps you to customize your Windows Terminal. If you have any questions feel free to leave a comment and check out the documentation on the Windows Subsystem for Linux 2, Azure Cloud Shell, and PowerShell 7. If you are interested in what’s new in PowerShell 7, check out my blog.
Tags: Color Scheme, Custom, Customize, Customized, Key Bindings, Microsoft, profiles.json, Settings, settings.json, Terminal, Windows, Windows 10, Windows Terminal, Windows Terminal Settings Last modified: January 5, 2021
Thank you very much for the gist link! I don’t know if it’s me but the default documentation links on the settings don’t give us an available settings parameter list.
You’re welcome
Let me know what you need and I can see if we find more information on it :)
I have a really dumb question…lol. Where is the settings.json file located? Where can I open to add things…? I’d like to add some commands for our Cisco switches that will fire up an SSH session to a specific IP address, and then I can login.
Thanks!
That sounds great! You simply open the settings here:
You should find it here: (Make sure you change the Username etc:
C:\Users\thoma\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState
Awesome! Thanks so much…
Ya, if I can use things out of the box vs. Putty, etc. the better.
Thanks again!
Thank you and I agree :)
Thanks
I’ve a question: how to map ctrl+d to send “exit”?
Thanks for sharing! The blog post on setting the background was excellent to follow.
I was curious, is there way to change the default app when Windows Terminal opens.
Right now it seems to be set to PowerShell and I’d like to change it to the Command Prompt.
Thank you David.
Yes to set the default shell/profile in Windows Terminal you have a value called “defaultProfile” where you can enter the GUID of the shell/profile you want to use as the default.
For cmd this would be the GUID “0caa0dad-35be-5f56-a8ff-afceeeaa6101”
is it possible to create different profiles on settings.json for different azure command shell? So you have a connection to multiple tenants.
You mean different Azure Cloud Shell connections or do you mean just Azure CLI or Azure PowerShell?
I mean different Azure Cloud Shell connections. I found the solution, in the Azure Cloud Shell you add and authenticate all your different tenants.
By open a new Azure Cloud Shell terminal they ask you on witch Tenant do you will connect.
Yes exactly :)
Hello,
Can we define a terminal that communicates in serial mode, for example to communicate with an ESP32 microprocessor. With Putty, we can do it.
Thank you for your reply.
Hey. I have tried to create a Cygwin profile, I have tried to follow the instructions to modify the JSON file, but I cannot get it to appear on the dropdown list.
Here is what I’ve got:
“guid”: “{40daf063-87b3-4c8d-9c7f-a721e82dfa0c}”,
“hidden”: false,
“name”: “Cygwin Terminal”,
“source”: “C:\\cygwin64\\bin\\bash.exe –login -i”,
“icon”: “C:\\cygwin64\\Cygwin.ico”
I have also tried replacing the “\\” with a “/”.
You can try the following:
“guid”: “{40daf063-87b3-4c8d-9c7f-a721e82dfa0c}”,
“hidden”: false,
“name”: “Cygwin Terminal”,
“commandline”: “C:/cygwin64/bin/bash.exe –login -i”,
“icon”: “C:/cygwin64/Cygwin.ico”
make sure the GUID is generated as a new GUID (you can use PowerShell to generate one: https://www.thomasmaurer.ch/2016/03/create-guid-using-powershell/
Thank you very much!!!!!!!!
You’re welcome :)
Hello, thanks for the very interesting article, I learned a lot about my soon-to-be next terminal software.
Is it possible to associate to one of the profiles a different key combination? I have noticed they get automatically assigned the ctrl+shift+n but I’d like to do something like this:
{
// Connects to a remote machine using SSH
“guid”: “{3b6e258c-bd69-43af-9365-69b153b0ece6}”,
“name”: “SSH Thomas AzureVM 💻”,
“tabTitle”: “SSH Thomas Maurer AzureVM”,
“commandline”: “ssh [email protected]“,
“keys”: “alt+shift+e”
},
Hi Edoardo
Well, the profiles are numbered, so you can use Ctrl+shift+1 or Ctrl+Shift+2 etc
Thanks for your posts about Windows Terminal. Now it’s my main console. IS very often use panes in Windows Terminal and therefore I created dedicated Powershell function for it. Maybe Start-WindowsTerminal function will be helpful for somebody.
https://akademiapowershell.pl/2020/07/panes-in-windows-terminal/
Thomas,
How can I specify a different size and location for each profile to open with?
I don’t see any settings to do this.
(And size and locations set with the context menu don’t stick for the next use of Windows Terminal.)
Hello and thanks for a nice article.
Is there a way to automatically set a different color scheme depending on whether it’s running as a normal user or Administrator (for example, having a red background when running as Administrator or something like that) ?
I keep getting things in my “list”: [ ] array that I don’t want, I edit settings.config, remove them, and when I open Windows Terminal they are appearing? what is happening ? Where are the entries coming from is there a default or backup version of settings.config … how are they coming back into my options for opening a new terminal window?
Awesome! Thanks so much…
you’re welcome :)
Not sure about the backup thing – probably. You can remove them from the display by changing the “hidden” property to “true” though. That will have the same effect that you want.
With “copyFormatting”, do you know if it is possible to copy for the format (font) of the text, but not the colouring?
I typically run the terminal with a black background and white text, but when I paste that into an email or document it looks awful.
Thanks in advance.
Thomas, regarding the directory for the settings is it always
~\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState?
I thought 8wekyb3d8bbwe was some guid on a per user or machine installation basis but this matches my one perfectly.
I’m making an automated update settings if my dotfiles git repo changes it. So should we expect it to change? If so when? Is it something MS would change on their next update or what?
Hi Thomas. Great site! Very useful. Thanks.
A question: My powershell is at 7.2.2 (via Get-Host | Select-Object Version), but when I type that command into my Developer PowerShell for VS 2022, I get 5.1.19041.1320. How can I update that to 7.2.2, or even uninstall 5.1?
PowerShell 7 and Windows PowerShell 5.1 run side by side. There are also two .exe files, powershell.exe for Windows PowerShell 5.1 and pwsh.exe for PowerShell 7. Just type pwsh into the console and it will start PowerShell 7.
Hey. Great. Any way to customize the progress bar?
why is this tagged under vs code if its for windows terminal ?