Table of Contents

Windows Terminal

Microsoft Windows Terminal is a modern, feature-rich terminal application that has revolutionized command-line experiences on Windows. It provides a unified interface for multiple shell environments while offering extensive customization and productivity features.

Overview

Microsoft describes Windows Terminal as:

Windows Terminal is a new, modern, feature-rich, productive terminal application for command-line users. It includes many of the features most frequently requested by the Windows command-line community including support for tabs, rich text, globalization, configurability, theming & styling, and more.

Key Features

  • Multi-tab support: Run multiple command-line sessions in a single window
  • Multiple shell profiles: Support for PowerShell, Command Prompt, WSL, and custom shells
  • Rich text rendering: Unicode and UTF-8 character support, emoji rendering
  • Theming and customization: Extensive visual customization options
  • Hardware acceleration: GPU-accelerated text rendering for improved performance
  • Pane management: Split terminals into multiple panes for multitasking

System Requirements

  • Windows 10 version 19041.0 or higher
  • Windows 11 (recommended for best experience)
  • Microsoft Store access (for store installation)
  • .NET Framework 4.7.2 or higher (usually pre-installed)

Installation

Windows Terminal can be installed through multiple methods. Choose the one that best fits your environment and preferences.

Install Windows Terminal:

winget install --id Microsoft.WindowsTerminal -e

Update Windows Terminal:

winget update --id Microsoft.WindowsTerminal -e

Check installed version:

winget list Microsoft.WindowsTerminal

Method 2: Microsoft Store

  1. Open the Microsoft Store application
  2. Search for "Windows Terminal"
  3. Click Get or Install
  4. Launch from Start Menu or taskbar

Benefits of Store installation:

  • Automatic updates
  • Sandboxed security model
  • Easy uninstallation

Method 3: Chocolatey Package Manager

Install Chocolatey first (if not already installed):

Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Install Windows Terminal:

choco install microsoft-windows-terminal

Update Windows Terminal:

choco upgrade microsoft-windows-terminal

Method 4: Manual Installation

  1. Visit the Windows Terminal GitHub releases page
  2. Download the latest .msixbundle file
  3. Double-click to install (requires Developer Mode or sideloading enabled)
Note

The Windows Store method is recommended for most users as it provides automatic updates and the best security model.

First Launch and Basic Setup

Initial Configuration

When you first launch Windows Terminal, it comes with default profiles for available shells on your system:

  • PowerShell (default)
  • Command Prompt
  • Azure Cloud Shell (if Azure CLI is installed)
  • WSL distributions (if Windows Subsystem for Linux is enabled)

Opening Windows Terminal

From Start Menu:

  • Type "Terminal" and select "Windows Terminal"

Using keyboard shortcut:

  • Press Win + X and select "Windows Terminal" (Windows 11)
  • Press Win + R, type wt, and press Enter

From File Explorer:

  • Right-click in any folder and select "Open in Windows Terminal"

Basic Navigation

Action Shortcut Description
New Tab Ctrl + Shift + T Open new tab with default profile
Close Tab Ctrl + Shift + W Close current tab
Switch Tabs Ctrl + Tab Cycle through open tabs
New Pane Alt + Shift + D Split current tab into panes
Settings Ctrl + , Open settings file

Configuration Basics

Windows Terminal stores its configuration in a JSON file that can be easily customized.

Accessing Settings

Via GUI:

  1. Click the dropdown arrow next to the new tab button
  2. Select Settings

Via keyboard:

  • Press Ctrl + ,

Direct file access:

  • Location: %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

Essential Configuration Options

Setting Default Profile

{
    "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "profiles": {
        "defaults": {
            "fontFace": "Cascadia Code",
            "fontSize": 11
        }
    }
}

Startup Behavior

{
    "startupActions": "new-tab -p \"PowerShell\"; split-pane -p \"Command Prompt\"",
    "launchMode": "maximized",
    "initialCols": 120,
    "initialRows": 30
}

Profile Management

Understanding Profiles

Profiles define the appearance and behavior of each shell environment. Each profile includes:

  • Command-line executable and arguments
  • Visual appearance (colors, fonts, background)
  • Working directory and environment variables
  • Tab title and icon

Common Profile Configurations

PowerShell Profile

{
    "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
    "name": "PowerShell",
    "commandline": "pwsh.exe",
    "icon": "ms-appx:///ProfileIcons/pwsh.png",
    "colorScheme": "Campbell Powershell",
    "fontFace": "Cascadia Code",
    "fontSize": 11,
    "startingDirectory": "%USERPROFILE%"
}

WSL Profile

{
    "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
    "name": "Ubuntu-20.04",
    "commandline": "wsl.exe -d Ubuntu-20.04",
    "icon": "ms-appx:///ProfileIcons/linux.png",
    "colorScheme": "One Half Dark",
    "startingDirectory": "//wsl$/Ubuntu-20.04/home/username"
}

Git Bash Profile

{
    "guid": "{00000000-0000-0000-ba54-000000000002}",
    "name": "Git Bash",
    "commandline": "\"%PROGRAMFILES%\\Git\\usr\\bin\\bash.exe\" -i -l",
    "icon": "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico",
    "startingDirectory": "%USERPROFILE%"
}

Customization and Themes

Color Schemes

Windows Terminal supports extensive color customization through predefined and custom color schemes.

Campbell (Default):

{
    "name": "Campbell",
    "foreground": "#CCCCCC",
    "background": "#0C0C0C",
    "black": "#0C0C0C",
    "red": "#C50F1F",
    "green": "#13A10E",
    "yellow": "#C19C00"
}

One Half Dark:

{
    "name": "One Half Dark",
    "foreground": "#DCDFE4",
    "background": "#282C34",
    "black": "#282C34",
    "red": "#E06C75",
    "green": "#98C379",
    "yellow": "#E5C07B"
}

Background Customization

Solid Colors

{
    "background": "#1E1E1E",
    "useAcrylic": false
}

Acrylic Transparency

{
    "useAcrylic": true,
    "acrylicOpacity": 0.8,
    "background": "#1E1E1E"
}

Background Images

{
    "backgroundImage": "C:\\Users\\username\\Pictures\\terminal-bg.jpg",
    "backgroundImageOpacity": 0.3,
    "backgroundImageStretchMode": "uniformToFill"
}

Font Configuration

Font Features Best For
Cascadia Code Ligatures, designed for terminals General development
JetBrains Mono Ligatures, high readability IDE-like experience
Fira Code Extensive ligature support Functional programming
Consolas Windows native, good readability Traditional Windows feel

Font Settings

{
    "fontFace": "Cascadia Code",
    "fontSize": 11,
    "fontWeight": "normal",
    "antialiasingMode": "grayscale"
}

Productivity Features

Pane Management

Windows Terminal supports splitting the terminal window into multiple panes for multitasking.

Pane Shortcuts

Action Shortcut Description
Split Horizontal Alt + Shift + - Split pane horizontally
Split Vertical Alt + Shift + + Split pane vertically
Close Pane Ctrl + Shift + W Close current pane
Navigate Panes Alt + Arrow Keys Move between panes
Resize Panes Alt + Shift + Arrow Keys Resize current pane

Pane Configuration

{
    "keybindings": [
        {
            "command": {
                "action": "splitPane",
                "split": "vertical",
                "profile": "PowerShell"
            },
            "keys": "ctrl+shift+v"
        }
    ]
}

Custom Key Bindings

Common Customizations

{
    "keybindings": [
        {
            "command": "find",
            "keys": "ctrl+shift+f"
        },
        {
            "command": {
                "action": "copy",
                "singleLine": false
            },
            "keys": "ctrl+c"
        },
        {
            "command": "paste",
            "keys": "ctrl+v"
        },
        {
            "command": "toggleFullscreen",
            "keys": "f11"
        }
    ]
}

Advanced Features

Command Palette

Access the command palette with Ctrl + Shift + P to:

  • Switch between profiles quickly
  • Access settings and actions
  • Run commands without memorizing shortcuts

Tab Renaming

{
    "keybindings": [
        {
            "command": {
                "action": "renameTab",
                "title": "New Title"
            },
            "keys": "ctrl+shift+r"
        }
    ]
}

Development Workflow Integration

Integration with IDEs

Visual Studio Code

Open project in VS Code from terminal:

code .
code filename.txt
code --new-window

VS Code integrated terminal settings:

{
    "terminal.integrated.defaultProfile.windows": "Windows Terminal",
    "terminal.external.windowsExec": "wt.exe"
}

JetBrains IDEs

Configure JetBrains IDEs to use Windows Terminal:

  1. Go to SettingsToolsTerminal
  2. Set Shell path to: wt.exe

Git Integration

Git in Windows Terminal

Configure Git for better terminal experience:

git config --global core.autocrlf true
git config --global core.editor "code --wait"
git config --global init.defaultBranch main

Useful Git aliases for terminal:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up 'pull --rebase'

PowerShell Profile Enhancement

Create Enhanced PowerShell Profile

# Check if profile exists
Test-Path $PROFILE

# Create profile if it doesn't exist
if (!(Test-Path $PROFILE)) {
    New-Item -Type File -Path $PROFILE -Force
}

# Edit profile
notepad $PROFILE

Sample PowerShell Profile Content

# Import modules
Import-Module posh-git
Import-Module oh-my-posh

# Set theme
Set-PoshPrompt -Theme paradox

# Useful aliases
Set-Alias ll Get-ChildItem
Set-Alias grep Select-String
Set-Alias which Get-Command

# Functions
function Get-GitStatus { git status }
function Get-GitLog { git log --oneline -10 }

Set-Alias gs Get-GitStatus
Set-Alias gl Get-GitLog

Troubleshooting

Common Issues and Solutions

Performance Issues

Symptoms:

  • Slow text rendering
  • High CPU usage
  • Sluggish response

Solutions:

{
    "experimental.rendering.forceFullRepaint": false,
    "experimental.rendering.software": false,
    "antialiasingMode": "cleartype"
}

Font Rendering Problems

Symptoms:

  • Blurry text
  • Inconsistent character spacing
  • Missing ligatures

Solutions:

  1. Update font settings:
{
    "fontFace": "Cascadia Code",
    "antialiasingMode": "grayscale",
    "experimental.rendering.software": false
}
  1. Clear font cache:
# Run as Administrator
sc stop "FontCache"
del /q /s /f "%WinDir%\ServiceProfiles\LocalService\AppData\Local\FontCache\*"
sc start "FontCache"

Profile Not Loading

Check profile paths:

# List available profiles
wt --help

# Test profile execution
pwsh.exe -NoProfile

Reset to defaults:

  1. Rename settings file: settings.jsonsettings.json.backup
  2. Restart Windows Terminal
  3. Restore custom settings gradually

Configuration Backup and Restore

Backup Configuration

# Create backup
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"
Copy-Item "$settingsPath\settings.json" "$env:USERPROFILE\Desktop\wt-settings-backup.json"

Restore Configuration

# Restore backup
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"
Copy-Item "$env:USERPROFILE\Desktop\wt-settings-backup.json" "$settingsPath\settings.json"

Getting Help

Official Resources

Diagnostic Commands

# Check Windows Terminal version
wt --version

# List all profiles
wt --help

# Test configuration
wt --validate-settings

Advanced Topics

Custom Themes and Extensions

Creating Custom Color Schemes

Use online tools like Windows Terminal Themes to generate custom themes.

PowerShell Modules for Enhanced Experience

# Install useful modules
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Install-Module PSReadLine -Scope CurrentUser -Force
Install-Module Terminal-Icons -Scope CurrentUser

Automation and Scripting

Launch Specific Layouts

# Launch with multiple tabs
wt new-tab -p "PowerShell" ; new-tab -p "Ubuntu-20.04"

# Launch with split panes
wt new-tab -p "PowerShell" ; split-pane -p "Command Prompt"

Windows Terminal as Default

Set Windows Terminal as the default terminal application:

  1. Open SettingsPrivacy & SecurityFor developers
  2. Set Terminal to "Windows Terminal"

Best Practices

Configuration Management

  1. Version Control: Store your settings.json in version control
  2. Modular Configuration: Use includes for shared settings
  3. Regular Backups: Backup configurations before major changes
  4. Testing: Test configurations in isolated environments

Performance Optimization

  1. Limit History: Set appropriate scrollback buffer sizes
  2. Disable Unnecessary Features: Turn off unused visual effects
  3. Hardware Acceleration: Enable GPU rendering when available
  4. Profile Optimization: Remove unused profiles

Security Considerations

  1. Execution Policy: Understand PowerShell execution policies
  2. Path Security: Be cautious with custom executable paths
  3. Environment Variables: Secure sensitive environment variables
  4. Updates: Keep Windows Terminal updated for security patches

This comprehensive guide covers the essential aspects of Windows Terminal. For the latest features and updates, refer to the official documentation and GitHub repository.