WindowsIntermediate

Windows Terminal: Customization Tips for Developers

Practical Windows Terminal configuration — profiles, keybindings, and settings that make it a genuinely good default terminal instead of a Command Prompt replacement.

DevFieldGuideJune 8, 2026 (updated July 7, 2026)6 min read
Share:

Windows Terminal replaced the old Command Prompt/PowerShell window years ago, but most people never touch the settings past the defaults. A few changes make a real difference day to day.

Most of the profiles worth setting up here are WSL-based — see the WSL2 setup guide if you haven't already got a Linux distro running underneath Windows Terminal.

Finding the settings

Ctrl+, opens settings.json directly — the JSON config is more powerful than the settings UI and worth editing by hand once you know what you're changing.

Set a sane default profile

If you use WSL regularly, make it the default instead of PowerShell:

json
{
  "defaultProfile": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}"
}

Each profile has a GUID — find yours under "profiles""list" in the same file, next to whichever profile you want as default.

ActionKeybinding
Split paneAlt+Shift+D (auto direction)
Command paletteCtrl+Shift+P
New tabCtrl+Shift+T
Close paneCtrl+Shift+W (custom, shown below)

Split panes instead of multiple windows

json
{
  "command": "splitPane",
  "keys": "alt+shift+d"
}

Splitting panes (horizontally or vertically) inside one tab, rather than juggling separate terminal windows, keeps related work — a dev server in one pane, a git status/log in another — visible at once.

Default split keybindings are Alt+Shift+D (auto direction), or you can bind explicit horizontal/vertical splits.

Useful custom keybindings

json
{
  "actions": [
    { "command": "closePane", "keys": "ctrl+shift+w" },
    { "command": { "action": "nextTab" }, "keys": "ctrl+tab" },
    { "command": { "action": "prevTab" }, "keys": "ctrl+shift+tab" },
    { "command": "find", "keys": "ctrl+shift+f" }
  ]
}

Quake mode — a dropdown terminal

json
{
  "command": "globalSummon",
  "keys": "win+`"
}

Bound to a global hotkey, this drops a terminal down from the top of the screen from anywhere in Windows, like classic "Quake console" terminals — genuinely useful for a quick command without alt-tabbing to find an existing terminal window.

Color schemes and fonts

json
{
  "profiles": {
    "defaults": {
      "colorScheme": "One Half Dark",
      "font": {
        "face": "CascadiaCode Nerd Font",
        "size": 11
      }
    }
  }
}

A Nerd Font (a patched font with extra glyphs) is worth installing if you use a shell prompt theme like Starship or Oh My Posh — without one, prompt icons render as broken boxes.

Starting profiles in a specific directory

json
{
  "profiles": {
    "list": [
      {
        "name": "Projects",
        "commandline": "wsl.exe",
        "startingDirectory": "//wsl$/Ubuntu/home/you/projects"
      }
    ]
  }
}

Useful for a dedicated profile that always opens straight into your main project directory instead of your home folder.

The actual payoff

None of these changes are individually dramatic — but a terminal you've tuned to open in the right place, with the right shell, split the way you want, with keybindings you don't have to think about, removes a dozen small frictions from a tool you likely have open for most of your working day.

Command Palette and fuzzy actions

Ctrl+Shift+P opens Windows Terminal's own command palette — a searchable list of every action the terminal supports (splitting panes, switching profiles, renaming a tab), without needing to remember or bind a dedicated keybinding for each one:

json
{
  "command": "commandPalette",
  "keys": "ctrl+shift+p"
}

This is genuinely useful for actions used rarely enough that a dedicated keybinding isn't worth memorizing (renaming a tab, changing a pane's color scheme on the fly) but common enough that hunting through a settings menu each time is annoying.

Custom actions for common WSL workflows

For developers splitting time between Windows tools and a WSL-based Linux environment, a dedicated action to open a new WSL pane in the current directory removes a repeated bit of friction:

json
{
  "command": {
    "action": "splitPane",
    "commandline": "wsl.exe -d Ubuntu",
    "split": "auto"
  },
  "keys": "alt+shift+l"
}

Combined with the startingDirectory setting from the profile section above, this gets a new Linux pane opened directly into a project directory with one keybinding, instead of opening a new tab and cd-ing manually each time.

Backing up and syncing settings across machines

settings.json lives at a predictable path (%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json for the Store version), which makes it straightforward to keep under version control alongside other dotfiles rather than reconfiguring by hand on every new machine:

powershell
New-Item -ItemType SymbolicLink `
  -Path "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" `
  -Target "$HOME\dotfiles\windows-terminal-settings.json"

Symlinking (rather than copying) means future edits made through the settings UI or by hand still land in the tracked dotfiles repo automatically, the same pattern worth using for any per-machine config file you don't want to lose or re-create from memory.

Per-profile transparency and acrylic effects

Visual settings are scoped per-profile, not just global, which is useful for giving different profiles a distinct look — a subtle visual cue for "this is my production SSH profile" versus a local dev shell, for instance:

json
{
  "profiles": {
    "list": [
      {
        "name": "Production SSH",
        "opacity": 85,
        "useAcrylic": true,
        "colorScheme": "Campbell",
        "background": "#3a0000"
      }
    ]
  }
}

A distinctly colored background on a profile used for connecting to production is a small, low-effort safeguard against the very real mistake of running a command in the wrong terminal window entirely — a quick glance at the color tells you which environment you're in before you type anything.

Common mistakes

Common mistakes
  • Editing settings.json with a trailing comma after the last item in an object or array — valid in some looser JSON parsers, invalid here, and it fails silently rather than with a clear error.
  • Binding a custom keybinding to a combination already used by the shell or a running application inside the pane (e.g. Ctrl+F inside vim) — the terminal-level binding wins, which can make it look like the inner application's shortcut "stopped working."
  • Setting a Nerd Font as the profile font without actually installing it first — the terminal falls back to a default font and prompt icons render as empty boxes, which looks like a terminal bug but is actually a missing font.
  • Forgetting that startingDirectory paths for WSL profiles use the \\wsl$\ UNC path format, not a plain Linux path — a plain /home/you/projects won't resolve from Windows Terminal's profile config.
Advertisement

Frequently Asked Questions

Advertisement
DevFieldGuide
DevFieldGuide

Editorial Team

Practical tutorials and developer tools, written and maintained by the DevFieldGuide team.

Enjoyed this article?

Get the next one straight to your inbox, along with the best of what we publish each week.

Related Articles

More in Windows

View all