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
useAcrylicandopacityfor 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.jsonwith Git to maintain identical settings across multiple PCs - Split panes: Quickly split with
Alt+Shift+=(vertical) andAlt+Shift+-(horizontal), navigate withAlt+arrow keys