Windows Terminal Customization

Unleash the full potential of your command-line interface.

Windows Terminal is a modern, fast, efficient, and extensible terminal application for users who can use command-line tools on Windows. This article provides an in-depth guide to customizing your Windows Terminal experience to boost productivity and personal aesthetics.

Getting Started with Settings

Windows Terminal's settings are managed through a JSON file. You can access this file directly by clicking the dropdown arrow next to the '+' tab button and selecting 'Settings', or by pressing Ctrl + ,.

The settings.json File

The settings.json file is the heart of your customization. It's structured in a hierarchical manner, allowing you to define global settings, profiles for different shells, and color schemes.

Tip: Always validate your JSON syntax. An invalid syntax can prevent Windows Terminal from loading its settings. The built-in editor provides basic validation, but external JSON validators are also useful.

Customizing Profiles

Profiles define the behavior and appearance of individual terminal instances. You can create profiles for PowerShell, Command Prompt, WSL distributions (like Ubuntu or Debian), Azure Cloud Shell, and more.

Key Profile Settings:

  • guid: A unique identifier for the profile.
  • name: The name displayed in the tab and dropdown menu.
  • commandline: The executable to run (e.g., "powershell.exe", "wsl.exe -d Ubuntu").
  • hidden: Set to true to hide the profile from the UI.
  • icon: Path to an icon file (e.g., .ico, .png) for the profile.
  • startingDirectory: The initial directory for the terminal session.
  • font: Customize the font family, size, and weight.
  • colorScheme: Assign a pre-defined or custom color scheme.
  • useAcrylic: Enable or disable acrylic transparency effects.
  • backgroundImage: Set a background image for the terminal.
  • backgroundImageOpacity: Control the opacity of the background image.
  • cursorShape: Choose the cursor style (e.g., "bar", "underscore", "filledBox").
  • selectionBackground: The background color when text is selected.

Example PowerShell Profile:

{
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "PowerShell",
    "commandline": "pwsh.exe",
    "hidden": false,
    "icon": "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}/powershell.png",
    "font": {
        "face": "Cascadia Mono",
        "size": 12,
        "weight": "normal"
    },
    "colorScheme": "Campbell",
    "useAcrylic": true,
    "backgroundImage": "ms-appx:///ProfilePics/background.jpg",
    "backgroundImageOpacity": 0.2,
    "cursorShape": "underscore",
    "selectionBackground": "#0078D7"
}

Color Schemes

A visually appealing terminal can significantly improve your coding experience. Windows Terminal supports custom color schemes, which you can define or import.

Defining Custom Color Schemes

Color schemes are defined within the schemes array in settings.json. Each scheme has a name and an array of colors.

"schemes": [
    {
        "name": "Solarized Dark",
        "cursorColor": "#839496",
        "selectionBackground": "#002b36",
        "background": "#002b36",
        "black": "#073642",
        "blue": "#268bd2",
        "cyan": "#2aa198",
        "green": "#859900",
        "red": "#dc322f",
        "white": "#93a1a1",
        "yellow": "#b58900",
        "purple": "#6c71c4",
        "orange": "#cb4b16",
        "brightBlack": "#002b36",
        "brightBlue": "#268bd2",
        "brightCyan": "#2aa198",
        "brightGreen": "#859900",
        "brightRed": "#dc322f",
        "brightWhite": "#fffffd",
        "brightYellow": "#b58900",
        "brightPurple": "#6c71c4",
        "brightOrange": "#cb4b16"
    }
]
Note: You can find many pre-made color schemes online by searching for "Windows Terminal color schemes".

Advanced Customization

Key Bindings

Customize keyboard shortcuts for common actions like opening new tabs, splitting panes, or copying/pasting.

"keybindings": [
    {
        "command": { "action": "copy" },
        "keys": "ctrl+shift+c"
    },
    {
        "command": { "action": "paste" },
        "keys": "ctrl+shift+v"
    },
    {
        "command": { "action": "newTab", "profile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}" },
        "keys": "ctrl+alt+p"
    }
]

Global Settings

Apply settings globally across all profiles, such as default font, theme (light/dark), and launch behavior.

"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"theme": "dark",
"firstTabWidthMode": "equal",
"launchMode": "default"
Warning: Incorrectly modifying global settings might affect all your terminal profiles. Always back up your settings.json before making significant changes.

Troubleshooting

If your terminal isn't behaving as expected, try the following:

  • Validate your settings.json for syntax errors.
  • Check for typos in profile names, GUIDs, or command lines.
  • Ensure that any custom fonts or images are correctly referenced.
  • Restart Windows Terminal after making changes.

Conclusion

By leveraging the extensive customization options in Windows Terminal, you can create a powerful, personalized, and efficient command-line environment. Experiment with different settings, color schemes, and key bindings to find what works best for your workflow.