Starship terminal setup on Windows

This guide covers installing Starship on Windows, setting up Nerd Fonts, and integrating everything into Windows Terminal and VS Code with the OneDark theme.

Install a Nerd Font

Starship uses symbols that require a patched font. Install a Nerd Font of your choice (e.g. FiraCode Nerd Font or CaskaydiaCove Nerd Font):

  1. Download from nerdfonts.com
  2. Extract the archive, select all .ttf files, right-click → Install for all users

Alternatively, use winget:

1
winget install --id=Nerdfont.FiraCode -e

Or install via Chocolatey:

1
choco install nerd-fonts-firacode

Install Starship

Install Starship via winget:

1
winget install --id Starship.Starship

Or via Chocolatey:

1
choco install starship

Install PowerShell 7+

This guide targets PowerShell 7+ (cross-platform, pwsh.exe), not the legacy Windows PowerShell 5.1. Install it via winget:

1
winget install --id Microsoft.PowerShell -e

After installation, pwsh should be available in your PATH. Verify with:

1
pwsh --version

Configure your shell to use Starship

PowerShell 7+

Open your PowerShell 7 profile. Note that pwsh uses a separate profile path from Windows PowerShell 5.1:

1
pwsh -Command "if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -Type File -Force }; notepad $PROFILE"

Add the following line to the profile:

1
Invoke-Expression (&starship init powershell)

CMD

For CMD integration, install Clink and add the following to a starship.lua file in your Clink scripts directory (clink info shows the path):

1
load(io.popen('starship init cmd'):read("*a"))()

Starship configuration

Starship is configured via ~/.config/starship.toml. Create the file if it doesn’t exist:

1
2
mkdir -Force ~/.config
New-Item -Path ~/.config/starship.toml -Type File

A minimal configuration to get started:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ~/.config/starship.toml

format = """
$directory\
$git_branch\
$git_status\
$dotnet\
$nodejs\
$python\
$docker_context\
$line_break\
$character"""

[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"

[directory]
truncation_length = 5
truncation_symbol = "…/"

[git_branch]
symbol = " "

[git_status]
format = '([\[$all_status$ahead_behind\]]($style) )'

Browse the full configuration options at starship.rs/config.

You can also use one of the bundled presets:

1
starship preset nerd-font-symbols -o ~/.config/starship.toml

Windows Terminal – OneDark theme and Nerd Font

Open Windows Terminal settings (Ctrl+,) → Open JSON file, and add the OneDark color scheme to the schemes array:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "name": "OneDark",
    "background": "#282C34",
    "foreground": "#ABB2BF",
    "cursorColor": "#528BFF",
    "selectionBackground": "#3E4451",
    "black": "#282C34",
    "red": "#E06C75",
    "green": "#98C379",
    "yellow": "#E5C07B",
    "blue": "#61AFEF",
    "purple": "#C678DD",
    "cyan": "#56B6C2",
    "white": "#ABB2BF",
    "brightBlack": "#5C6370",
    "brightRed": "#E06C75",
    "brightGreen": "#98C379",
    "brightYellow": "#E5C07B",
    "brightBlue": "#61AFEF",
    "brightPurple": "#C678DD",
    "brightCyan": "#56B6C2",
    "brightWhite": "#FFFFFF"
}

Then apply the scheme and Nerd Font to your profile in the profiles.defaults or a specific profile:

1
2
3
4
5
6
7
8
9
10
11
{
    "defaults": {
        "colorScheme": "OneDark",
        "font": {
            "face": "FiraCode Nerd Font",
            "size": 11
        },
        "opacity": 95,
        "useAcrylic": false
    }
}

Make sure PowerShell 7 is set as the default profile in Windows Terminal. Under profiles.list, ensure the pwsh.exe entry exists (it is usually auto-detected). Then set it as default via defaultProfile in the JSON root:

1
2
3
{
    "defaultProfile": "{GUID-of-PowerShell-7-profile}"
}

You can find the GUID in the profiles.list array for the entry named “PowerShell” with "source": "Windows.Terminal.PowershellCore". Alternatively, set this via the Terminal UI under Settings → Startup → Default profile.

VS Code – Starship integration with OneDark

Terminal font

In VS Code settings (Ctrl+,), configure the integrated terminal to use the Nerd Font. Add to your settings.json:

1
2
3
4
{
    "terminal.integrated.fontFamily": "'FiraCode Nerd Font', monospace",
    "terminal.integrated.fontSize": 14
}

This ensures Starship glyphs render correctly in the VS Code terminal.

OneDark theme

Install the One Dark Pro extension from the marketplace:

  1. Open Extensions (Ctrl+Shift+X)
  2. Search for One Dark Pro
  3. Click Install
  4. Set it as active: Ctrl+K Ctrl+T → select One Dark Pro

Terminal color scheme (OneDark)

To apply OneDark colors specifically to the integrated terminal, add to settings.json:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
    "workbench.colorCustomizations": {
        "terminal.background": "#282C34",
        "terminal.foreground": "#ABB2BF",
        "terminalCursor.foreground": "#528BFF",
        "terminal.ansiBlack": "#282C34",
        "terminal.ansiRed": "#E06C75",
        "terminal.ansiGreen": "#98C379",
        "terminal.ansiYellow": "#E5C07B",
        "terminal.ansiBlue": "#61AFEF",
        "terminal.ansiMagenta": "#C678DD",
        "terminal.ansiCyan": "#56B6C2",
        "terminal.ansiWhite": "#ABB2BF",
        "terminal.ansiBrightBlack": "#5C6370",
        "terminal.ansiBrightRed": "#E06C75",
        "terminal.ansiBrightGreen": "#98C379",
        "terminal.ansiBrightYellow": "#E5C07B",
        "terminal.ansiBrightBlue": "#61AFEF",
        "terminal.ansiBrightMagenta": "#C678DD",
        "terminal.ansiBrightCyan": "#56B6C2",
        "terminal.ansiBrightWhite": "#FFFFFF"
    }
}

Note: If you’re using the One Dark Pro theme, the terminal colors are already included. The above is useful if you want to override or use a different editor theme while keeping OneDark in the terminal.

Default shell

Ensure VS Code uses PowerShell 7 as the default terminal profile so Starship initializes correctly. The profile name for pwsh is "PowerShell" (not "Windows PowerShell", which refers to the legacy 5.1):

1
2
3
{
    "terminal.integrated.defaultProfile.windows": "PowerShell"
}

Verify the correct shell is used by running $PSVersionTable.PSVersion in the VS Code terminal — it should show version 7.x or higher.