Windows Terminal is Microsoft's open-source, GPU-accelerated terminal host for Windows, replacing older shells like conhost.exe as the modern front-end for PowerShell, Command Prompt, WSL, Azure Cloud Shell, and any custom command-line application. It is driven by a single settings.json file whose layered structure β global defaults, per-profile overrides, actions, color schemes, and themes β means understanding that hierarchy unlocks almost every customization without touching any other configuration surface. The key mental model: anything placed in profiles.defaults applies to every shell automatically, so you set base preferences once and override only where a specific profile truly needs to differ.
What This Cheat Sheet Covers
This topic spans 21 focused tables and 188 indexed concepts, 132 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: settings.json File Structure and Location
The settings.json file is the single source of truth for all Windows Terminal customization. Every setting lives in a well-defined section of this JSON file, and understanding the top-level sections and where the file lives on disk is the prerequisite for all other configuration work.
| Setting | Example | Description | |
|---|---|---|---|
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json | β’ Path for the Microsoft Store (stable) release β’ open with Ctrl+, or the dropdown β Settings | ||
%LOCALAPPDATA%\Microsoft\Windows Terminal\settings.json | Path when installed via Scoop, Chocolatey, or direct download instead of the Store. | ||
Ctrl+, β lower-left "Open JSON file" | β’ Opens settings.json in your default .json editorβ’ Ctrl+Shift+, opens it directly without the Settings UI | ||
"$schema": "https://aka.ms/terminal-profiles-schema" | β’ Enables IntelliSense and validation in VS Code β’ place at the top of the file | ||
defaultProfile, profiles, schemes, themes, actions, keybindings | β’ The six main top-level keys β’ profiles contains both defaults and list sub-objects | ||
"defaults": { "fontFace": "Cascadia Code" } | β’ Settings placed here apply to all profiles β’ per-profile settings in list[] override them | ||
"list": [ { "name": "PowerShell", ... } ] | β’ Array of profile objects β’ profile order here maps to Ctrl+Shift+1, Ctrl+Shift+2, etc | ||
Hold Alt + click Settings button | β’ Shows Terminal's built-in defaults β’ cannot be edited β only settings.json values override them | ||
"import": ["my-actions.json", "my-themes.json"] | β’ Splits large configs into separate files β’ each fragment can contain actions, themes, or other settings |