Windows Terminal Customization — Profiles, Themes, and Shortcuts

Windows Terminal Introduction

Windows Terminal is a modern terminal application developed by Microsoft. It allows simultaneous use of CMD, PowerShell, WSL, Azure Cloud Shell, and other shells through tabs and split panes. It features GPU-accelerated text rendering, Unicode/emoji support, and rich customization options.

This article covers profile settings, Oh My Posh theme application, keyboard shortcut customization, and split pane usage.

Installation and Basic Setup

Install from the Microsoft Store or via winget.

# Install via winget
winget install Microsoft.WindowsTerminal

# Settings file location
# %LocalAppData%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
# Or open settings within Terminal with Ctrl+,

Profile Settings

Each shell (PowerShell, CMD, WSL, etc.) is managed as an individual profile. In settings.json, you can configure per-profile font, color, starting directory, and more.

// settings.json - profiles section
{
  "profiles": {
    "defaults": {
      // Applied to all profiles
      "font": {
        "face": "JetBrains Mono",
        "size": 13,
        "weight": "normal"
      },
      "opacity": 95,
      "useAcrylic": true,
      "padding": "12",
      "cursorShape": "filledBox",
      "scrollbarState": "hidden"
    },
    "list": [
      {
        "name": "PowerShell 7",
        "source": "Windows.Terminal.PowershellCore",
        "startingDirectory": "D:\\Projects",
        "colorScheme": "One Half Dark",
        "icon": "ms-appx:///ProfileIcons/pwsh.png",
        "tabTitle": "PS7"
      },
      {
        "name": "Ubuntu (WSL)",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "~",
        "colorScheme": "Tango Dark",
        "tabTitle": "WSL"
      },
      {
        "name": "CMD",
        "commandline": "cmd.exe",
        "hidden": false,
        "colorScheme": "Campbell"
      }
    ]
  }
}

Custom Color Themes

You can define custom themes beyond the built-in color schemes.

// settings.json - schemes section
{
  "schemes": [
    {
      "name": "My Custom Theme",
      "background": "#1E1E2E",
      "foreground": "#CDD6F4",
      "black": "#45475A",
      "red": "#F38BA8",
      "green": "#A6E3A1",
      "yellow": "#F9E2AF",
      "blue": "#89B4FA",
      "purple": "#CBA6F7",
      "cyan": "#94E2D5",
      "white": "#BAC2DE",
      "brightBlack": "#585B70",
      "brightRed": "#F38BA8",
      "brightGreen": "#A6E3A1",
      "brightYellow": "#F9E2AF",
      "brightBlue": "#89B4FA",
      "brightPurple": "#CBA6F7",
      "brightCyan": "#94E2D5",
      "brightWhite": "#A6ADC8",
      "cursorColor": "#F5E0DC",
      "selectionBackground": "#585B70"
    }
  ]
}

Oh My Posh Installation and Theme Application

Oh My Posh is a prompt theme engine that works with PowerShell, Bash, Zsh, and more. It displays Git status, execution time, error codes, and other info in your prompt.

# Install Oh My Posh
winget install JanDeDobbeleer.OhMyPosh

# Install Nerd Font (required for icons)
oh-my-posh font install JetBrainsMono

# List available themes
Get-PoshThemes
# Output: 50+ themes displayed with previews

# Enable Oh My Posh in PowerShell profile
notepad $PROFILE
# or
code $PROFILE

Add the following to your PowerShell profile file.

# $PROFILE file contents (Microsoft.PowerShell_profile.ps1)

# Enable Oh My Posh theme
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\catppuccin_mocha.omp.json" | Invoke-Expression

# Useful aliases
Set-Alias -Name ll -Value Get-ChildItem
Set-Alias -Name g -Value git
Set-Alias -Name c -Value code

# Enable auto-completion
Set-PSReadLineOption -PredictiveViewStyle ListView
Set-PSReadLineOption -EditMode Windows
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete

Keyboard Shortcut Settings

Windows Terminal keyboard shortcuts are managed in the actions array of settings.json.

// settings.json - actions section
{
  "actions": [
    // Tab management
    { "command": "newTab", "keys": "ctrl+t" },
    { "command": "closeTab", "keys": "ctrl+w" },
    { "command": "nextTab", "keys": "ctrl+tab" },
    { "command": "prevTab", "keys": "ctrl+shift+tab" },

    // Split panes
    { "command": { "action": "splitPane", "split": "horizontal" }, "keys": "alt+shift+-" },
    { "command": { "action": "splitPane", "split": "vertical" }, "keys": "alt+shift+=" },
    { "command": "closePane", "keys": "ctrl+shift+w" },

    // Navigate between panes
    { "command": { "action": "moveFocus", "direction": "up" }, "keys": "alt+up" },
    { "command": { "action": "moveFocus", "direction": "down" }, "keys": "alt+down" },
    { "command": { "action": "moveFocus", "direction": "left" }, "keys": "alt+left" },
    { "command": { "action": "moveFocus", "direction": "right" }, "keys": "alt+right" },

    // Resize panes
    { "command": { "action": "resizePane", "direction": "up" }, "keys": "alt+shift+up" },
    { "command": { "action": "resizePane", "direction": "down" }, "keys": "alt+shift+down" },

    // Open new tab with specific profile
    { "command": { "action": "newTab", "profile": "PowerShell 7" }, "keys": "ctrl+shift+1" },
    { "command": { "action": "newTab", "profile": "Ubuntu (WSL)" }, "keys": "ctrl+shift+2" },

    // Adjust font size
    { "command": { "action": "adjustFontSize", "delta": 1 }, "keys": "ctrl+=" },
    { "command": { "action": "adjustFontSize", "delta": -1 }, "keys": "ctrl+-" },
    { "command": "resetFontSize", "keys": "ctrl+0" },

    // Search
    { "command": "find", "keys": "ctrl+shift+f" },

    // Toggle fullscreen
    { "command": "toggleFullscreen", "keys": "f11" }
  ]
}

Using Split Panes

Split panes let you view multiple shells simultaneously in a single window. They’re useful for watching server logs while editing code, or comparing different environments.

# Launch Terminal with split panes from command line
wt -p "PowerShell 7" `; split-pane -p "Ubuntu (WSL)" `; split-pane -H -p "CMD"
# Result: PowerShell, WSL, and CMD each open in separate panes

# Open split panes in specific directories
wt -d D:\project1 `; split-pane -d D:\project2

# Specify split pane size
wt `; split-pane --size 0.3 -p "Ubuntu (WSL)"
# WSL pane opens at 30% of total width

Quake Mode

Quake mode is a feature where the terminal slides down from the top of the screen. You can quickly open a terminal from anywhere with a global shortcut.

# Launch Terminal in Quake mode
wt -w _quake

# Global shortcut setting (settings.json)
# Add to "actions" array:
# { "command": { "action": "globalSummon", "desktop": "any" }, "keys": "win+`" }

Useful Shell Integration Settings

Additional tools that pair well with Terminal.

# PSReadLine - command auto-completion and history search
Install-Module PSReadLine -Force
# Add to profile:
# Set-PSReadLineOption -PredictiveViewStyle ListView

# Terminal-Icons - show icons in file listings
Install-Module Terminal-Icons -Force
# Add to profile:
# Import-Module Terminal-Icons

# z - quick directory navigation (cd replacement)
Install-Module z -Force
# Usage example:
# z project  -> navigate to frequently visited project directory

Practical Tips

Key points for using Windows Terminal efficiently.

  • Fonts: Use Nerd Font variants (JetBrains Mono NF, FiraCode NF) for Oh My Posh icons to display correctly
  • Transparency: Combine useAcrylic and opacity for a translucent background
  • Change default terminal: In Windows 11, go to Settings -> Privacy & Security -> For Developers -> Terminal to set Windows Terminal as default
  • Separate profiles: Create profiles with different starting directories and environment variables per project for fast switching
  • Backup: Manage settings.json with Git to maintain identical settings across multiple PCs
  • Split panes: Quickly split with Alt+Shift+= (vertical) and Alt+Shift+- (horizontal), navigate with Alt+arrow keys

Was this article helpful?