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.

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:
- Extract the zip file
- Select all
.ttffiles - Right-click β Install or Install for all users
Or simply drag & drop them into:
C:\Windows\Fonts
Configure Windows Terminal (WSL)
- Open Windows Terminal
- Press
Ctrl + ,to open Settings - Select your WSL profile (e.g., Ubuntu)
- Go to Appearance
- Set Font face to your Nerd Font
- 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.
Useful Modules (Highly Recommended)
β± 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 experienceplain-text-symbolsβ No iconsno-nerd-fontβ Safe everywhere
Pro Tips π₯
- Run
starship explainto understand each module - Use
starship timingsto detect slow modules - Disable modules with
disabled = true - Less is more β too many modules = noisy prompt
- 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 β¨