# Windows Terminal

# WSL2

My WSL2 profile uses powerline, Cascadia Code PL font, and a transparent Tux as a background image.

WSL2

# Powerline

Perform the following steps to setup powerline for WSL2.

sudo apt install golang-go
go get -u github.com/justjanne/powerline-go

Add the following to the end of ~/.bashrc

GOPATH=$HOME/go
function _update_ps1() {
    PS1="$($GOPATH/bin/powerline-go -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

Source: Scott Hanselman

# Git Bash

My Git Bash profile uses a custom color set and the Cascadia Code font.

Git Bash

# Powershell

My Powershell profile is the default.

Powershell

# Command Prompt

My Command Prompt profile is the default.

Command Prompt

# Settings

Prerequisites

Cascadia Code font.

Classic Flat Tux Penguin 207x240 background image.

This is my full settings.json file for Windows Terminal. I use WSL2 as my default profile, enable copy-on-select, and explicitly hide the Azure Cloud Shell profile.

// This file was initially generated by Windows Terminal 1.0.1401.0
// It should still be usable in newer versions, but newer versions might have additional
// settings, help text, or changes that you will not see unless you clear this file
// and let us generate a new one for you.

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation
{
    "$schema": "https://aka.ms/terminal-profiles-schema",

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

    // You can add more global application settings here.
    // To learn more about global settings, visit https://aka.ms/terminal-global-settings

    // If enabled, selections are automatically copied to your clipboard.
    "copyOnSelect": true,

    // If enabled, formatted data is also copied to your clipboard
    "copyFormatting": false,

    // A profile specifies a command to execute paired with information about how it should look and feel.
    // Each one of them will appear in the 'New Tab' dropdown,
    //   and can be invoked from the commandline with `wt.exe -p xxx`
    // To learn more about profiles, visit https://aka.ms/terminal-profile-settings
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
        },
        "list":
        [
            {
                "guid": "{07b52e3e-de2c-5db4-bd2d-ba144ed6c273}",
                "hidden": false,
                "name": "Ubuntu-20.04",
                "source": "Windows.Terminal.Wsl",
                "fontFace":  "Cascadia Code PL",
                "backgroundImage": "%USERPROFILE%\\assets\\media\\images\\Classic_flat_look_v1.1.svg.png",
                "backgroundImageStretchMode": "none",
                "backgroundImageAlignment": "bottomRight",
                "backgroundImageOpacity": 0.5,
                "useAcrylic": true,
                "acrylicOpacity": 0.5
            },
            {
                "guid": "{00000000-0000-0000-0000-000000000001}",
                "hidden": false,
                "name": "Git Bash",
                "commandline": "%USERPROFILE%\\AppData\\Local\\Programs\\Git\\bin\\bash.exe --login -i",
                "startingDirectory": "~",
                "icon": "%USERPROFILE%\\AppData\\Local\\Programs\\Git\\mingw64\\share\\git\\git-for-windows.ico",
                "suppressApplicationTitle": true,
                "fontFace": "Cascadia Code",
                "colorScheme": "GitBash"
            },
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "Command Prompt",
                "commandline": "cmd.exe",
                "hidden": false
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": true,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]
    },

    // Add custom color schemes to this array.
    // To learn more about color schemes, visit https://aka.ms/terminal-color-schemes
    "schemes":
    [
        {
            "name" : "GitBash",
            "background" : "#000000",
            "black" : "#0C0C0C",
            "blue" : "#6060ff",
            "brightBlack" : "#767676",
            "brightBlue" : "#3B78FF",
            "brightCyan" : "#61D6D6",
            "brightGreen" : "#16C60C",
            "brightPurple" : "#B4009E",
            "brightRed" : "#E74856",
            "brightWhite" : "#F2F2F2",
            "brightYellow" : "#F9F1A5",
            "cyan" : "#3A96DD",
            "foreground" : "#bfbfbf",
            "green" : "#00a400",
            "purple" : "#bf00bf",
            "red" : "#bf0000",
            "white" : "#ffffff",
            "yellow" : "#bfbf00"
        }
    ],

    // Add custom keybindings to this array.
    // To unbind a key combination from your defaults.json, set the command to "unbound".
    // To learn more about keybindings, visit https://aka.ms/terminal-keybindings
    "keybindings":
    [
        // Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json.
        // These two lines additionally bind them to Ctrl+C and Ctrl+V.
        // To learn more about selection, visit https://aka.ms/terminal-selection
        { "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" },
        { "command": "paste", "keys": "ctrl+v" },

        // Press Ctrl+Shift+F to open the search box
        { "command": "find", "keys": "ctrl+shift+f" },

        // Press Alt+Shift+D to open a new pane.
        // - "split": "auto" makes this pane open in the direction that provides the most surface area.
        // - "splitMode": "duplicate" makes the new pane use the focused pane's profile.
        // To learn more about panes, visit https://aka.ms/terminal-panes
        { "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" }
    ]
}