tools Β· Β· 5 min read

Install Starship: The Minimal, Blazing-Fast Shell Prompt

A quick guide to installing and configuring Starship prompt on Linux. Make your terminal beautiful and informative without sacrificing speed.

Your default shell prompt is… let’s be honest β€” boring. It shows almost nothing useful and forces you to constantly type git status just to know what’s going on.

Starship fixes that.

It’s a modern, blazing-fast shell prompt written in Rust. Lightweight, context-aware, and smart enough to show you exactly what you need β€” git status, language versions, command duration β€” only when it matters. πŸš€

Once you use it, going back to the default prompt feels… ancient.

Starship terminal prompt with git status and icons


Why Starship?

Here’s why Starship deserves to be your daily driver:

  • ⚑ Fast β€” Written in Rust, barely any latency
  • 🧩 Cross-shell β€” Bash, Zsh, Fish, PowerShell, you name it
  • 🎯 Smart defaults β€” Looks great right after install
  • πŸ›  Highly customizable β€” Everything lives in one starship.toml

πŸ’‘ Starship only shows information when it’s relevant. Enter a Node project? Node version appears. Leave it? Gone. Clean and focused.


Installation

Prerequisites: Nerd Fonts (Important)

To get icons and symbols working properly, you must use a Nerd Font.

Recommended choices:

  • JetBrainsMono Nerd Font (popular and clean)
  • FiraCode Nerd Font (great ligatures)
  • Hack Nerd Font
  • UbuntuMono Nerd Font

Installing Nerd Fonts

On Linux

# Create fonts directory (if it doesn't exist)
mkdir -p ~/.local/share/fonts

# Copy font files
cp *.ttf ~/.local/share/fonts/

# Refresh font cache
fc-cache -fv

πŸ”₯ Tip: Fully restart your terminal after installing fonts β€” opening a new tab is not enough.


On Windows (WSL Users)

Since WSL relies on Windows for rendering, fonts must be installed on Windows itself.

Quick steps:

  1. Extract the zip file
  2. Select all .ttf files
  3. Right-click β†’ Install or Install for all users

Or simply drag & drop them into:

C:\Windows\Fonts

Configure Windows Terminal (WSL)

  1. Open Windows Terminal
  2. Press Ctrl + , to open Settings
  3. Select your WSL profile (e.g., Ubuntu)
  4. Go to Appearance
  5. Set Font face to your Nerd Font
  6. Save

Or edit settings.json directly:

{
  "profiles": {
    "list": [
      {
        "name": "Ubuntu",
        "font": {
          "face": "UbuntuMono Nerd Font"
        }
      }
    ]
  }
}

Configure VSCode Terminal

VSCode has its own terminal font settings.

Add this to your settings.json:

{
  "terminal.integrated.fontFamily": "UbuntuMono Nerd Font"
}

⚠️ Restart the VSCode terminal for changes to apply.


Install Starship

The easiest way on Linux:

curl -sS https://starship.rs/install.sh | sh

Or via package managers:

# Arch Linux
pacman -S starship

# Fedora
dnf install starship

# Homebrew (Linux/macOS)
brew install starship

Shell Integration

Enable Starship by adding the init script to your shell config.

Bash (~/.bashrc)

eval "$(starship init bash)"

Zsh (~/.zshrc)

eval "$(starship init zsh)"

Fish

starship init fish | source

Apply changes without restarting:

source ~/.bashrc  # or ~/.zshrc

Basic Configuration

Starship is configured using:

~/.config/starship.toml

Create it if it doesn’t exist:

mkdir -p ~/.config
touch ~/.config/starship.toml

Minimal & Clean Setup

add_newline = false

format = """
$directory$git_branch$git_status$character
"""

[directory]
truncation_length = 3
truncate_to_repo = true

[git_branch]
symbol = " "
style = "bold purple"

[git_status]
style = "bold red"

[character]
success_symbol = "[➜](bold green)"
error_symbol = "[βœ—](bold red)"

✨ Perfect if you like a minimal but informative prompt.


Auto-Detect Language Versions

Starship automatically detects your project type.

[nodejs]
symbol = " "

[python]
symbol = " "

[rust]
symbol = " "

[golang]
symbol = " "

Enter a Node project β†’ Node version appears. Same for Python, Rust, Go, and more.


⏱ Command Duration

Shows how long your last command took:

[cmd_duration]
min_time = 500
format = "took [$duration](bold yellow) "

πŸ•’ Time

[time]
disabled = false
format = "[$time](dimmed white) "
time_format = "%H:%M"

πŸ’‘ Handy when working long hours in the terminal.


🐳 Custom Commands (Docker Example)

[custom.docker]
command = "docker ps -q | wc -l"
when = "command -v docker"
symbol = "🐳 "
format = "[$symbol$output containers]($style) "

πŸ”₯ You can use this for Kubernetes context, VPN status, battery level, and more.


Presets (Zero Configuration)

List available presets:

starship preset --list

Apply a preset:

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

Popular presets:

  • nerd-font-symbols β€” Full icon experience
  • plain-text-symbols β€” No icons
  • no-nerd-font β€” Safe everywhere

Pro Tips πŸ”₯

  1. Run starship explain to understand each module
  2. Use starship timings to detect slow modules
  3. Disable modules with disabled = true
  4. Less is more β€” too many modules = noisy prompt
  5. Store your config in a dotfiles repo for easy sync

My Go-To Config

A balanced setup: clean, informative, not cluttered.

add_newline = true

format = """
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$cmd_duration\
$line_break\
$character
"""

[directory]
style = "bold cyan"
truncation_length = 4

[git_branch]
symbol = " "
style = "bold purple"

[git_status]
format = '([$all_status$ahead_behind]($style) )'
style = "bold red"

[cmd_duration]
min_time = 1000
format = "[$duration](bold yellow) "

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

πŸŽ‰ Done. Your terminal is now fast, informative, and actually enjoyable to use.

No more running git status every five seconds. Once you go Starship, there’s no going back ✨