Presets¶
Starship presets are pre-configured themes that you can apply instantly. This guide covers built-in presets and how to create your own.
Using Presets¶
Apply a Preset¶
Use the starship preset command to apply a built-in preset:
Warning
This overwrites your existing configuration. Back up first:
Preview a Preset¶
View preset contents without applying:
List Available Presets¶
Built-in Presets¶
Nerd Font Symbols¶
Replaces text with Nerd Font symbols throughout.
Characteristics:
- Uses Nerd Font icons for all modules
- Minimal text, maximum symbols
- Requires Nerd Font installed
Plain Text Symbols¶
ASCII-only symbols for terminals without Nerd Fonts.
Characteristics:
- No special fonts required
- Works on any terminal
- Uses text abbreviations
No Nerd Font¶
Modern look without requiring Nerd Fonts.
Characteristics:
- Unicode symbols only
- Clean, modern appearance
- Good compatibility
Bracketed Segments¶
Each module wrapped in brackets with distinct styling.
Characteristics:
- Clear module separation
[module]format- Easy to scan
Pure¶
Minimal prompt inspired by Pure.
Characteristics:
- Clean, minimal design
- Two-line prompt
- Shows only essential info
Pastel Powerline¶
Powerline-style segments with pastel colors.
Characteristics:
- Powerline arrows between segments
- Soft pastel colors
- Requires Nerd Font for arrows
Tokyo Night¶
Based on the Tokyo Night color scheme.
Characteristics:
- Dark theme colors
- Cohesive palette
- Modern aesthetic
Gruvbox Rainbow¶
Gruvbox colors with rainbow-style module backgrounds.
Characteristics:
- Gruvbox color palette
- Colorful backgrounds
- High visibility
Jetpack¶
Compact prompt with emoji indicators.
Characteristics:
- Uses emoji icons
- Compact layout
- Playful style
Creating Custom Presets¶
Starting from Scratch¶
Create a complete configuration in ~/.config/starship.toml:
# Custom preset: Minimal Developer
format = """
$directory\
$git_branch\
$git_status\
$character"""
add_newline = false
[character]
success_symbol = "[>](bold green)"
error_symbol = "[>](bold red)"
[directory]
truncation_length = 2
style = "bold cyan"
[git_branch]
format = "[$branch]($style) "
style = "bold purple"
[git_status]
format = "[$all_status]($style)"
style = "red"
conflicted = "!"
ahead = "^"
behind = "v"
diverged = "^v"
untracked = "?"
stashed = "*"
modified = "~"
staged = "+"
renamed = ">"
deleted = "x"
Extending a Preset¶
Apply a preset then customize specific parts:
# Start with a preset
starship preset plain-text-symbols -o ~/.config/starship.toml
# Then edit to customize
Add your customizations at the end of the file:
# ... preset content above ...
# My customizations
[directory]
truncation_length = 4
[time]
disabled = false
format = "[$time]($style)"
Sharing Presets¶
Share your preset by:
- Saving the TOML file
- Sharing via dotfiles repo
- Contributing to Starship presets (see contributing guide)
Preset Examples¶
Minimal Single-Line¶
# Minimal single-line prompt
format = "$directory$git_branch$character"
add_newline = false
[character]
success_symbol = " [>](green)"
error_symbol = " [>](red)"
[directory]
format = "[$path]($style)"
truncation_length = 1
style = "cyan"
[git_branch]
format = " [$branch]($style)"
style = "purple"
Output: mydir main >
Developer Two-Line¶
# Two-line developer prompt
format = """
$directory$git_branch$git_status$nodejs$python$rust$golang
$character"""
[character]
success_symbol = "[->](bold green)"
error_symbol = "[->](bold red)"
[directory]
format = "[$path]($style) "
truncation_length = 3
style = "bold blue"
[git_branch]
format = "on [$symbol$branch]($style) "
symbol = ""
style = "bold purple"
[git_status]
format = '([$all_status$ahead_behind]($style) )'
style = "bold red"
[nodejs]
format = "via [$symbol$version]($style) "
symbol = "node "
style = "green"
[python]
format = 'via [$symbol$version(\($virtualenv\))]($style) '
symbol = "py "
style = "yellow"
[rust]
format = "via [$symbol$version]($style) "
symbol = "rs "
style = "red"
[golang]
format = "via [$symbol$version]($style) "
symbol = "go "
style = "cyan"
Server/SSH Focused¶
# Server-focused prompt with host info
format = """
$username@$hostname $directory $git_branch$git_status
$character"""
[username]
show_always = true
format = "[$user]($style)"
style_user = "yellow"
style_root = "bold red"
[hostname]
ssh_only = false
format = "[$hostname]($style)"
style = "bold green"
[directory]
format = "[$path]($style)"
truncation_length = 3
style = "cyan"
[character]
success_symbol = "[\\$](green)"
error_symbol = "[\\$](red)"
# Disable unnecessary modules for servers
[package]
disabled = true
[nodejs]
disabled = true
[python]
disabled = true
Git-Centric¶
# Detailed git information
format = """
$directory
$git_branch$git_commit$git_state$git_metrics$git_status
$character"""
add_newline = true
[directory]
format = "[$path]($style)"
truncation_length = 5
style = "bold blue"
[git_branch]
format = "[$symbol$branch(:$remote_branch)]($style) "
symbol = "branch:"
style = "bold purple"
[git_commit]
format = "[commit:$hash$tag]($style) "
style = "green"
only_detached = false
tag_disabled = false
[git_state]
format = '[\($state( $progress_current/$progress_total)\)]($style) '
style = "bold yellow"
[git_metrics]
disabled = false
format = "([+$added]($added_style) )([-$deleted]($deleted_style) )"
added_style = "green"
deleted_style = "red"
[git_status]
format = '([$all_status$ahead_behind]($style))'
style = "bold red"
ahead = " up:${count}"
behind = " down:${count}"
diverged = " diverged"
conflicted = " conflict:${count}"
untracked = " ?:${count}"
stashed = " stash:${count}"
modified = " mod:${count}"
staged = " staged:${count}"
renamed = " ren:${count}"
deleted = " del:${count}"
[character]
success_symbol = "[->](bold green)"
error_symbol = "[->](bold red)"
Cloud DevOps¶
# Cloud and DevOps focused
format = """
$directory$git_branch$git_status
$aws$gcloud$kubernetes$docker_context$terraform
$character"""
[directory]
truncation_length = 2
style = "bold blue"
[git_branch]
format = "[$branch]($style) "
style = "purple"
[git_status]
format = "[$all_status]($style) "
style = "red"
[aws]
format = '[$symbol$profile(\($region\))]($style) '
symbol = "aws:"
style = "bold yellow"
[aws.region_aliases]
us-east-1 = "ue1"
us-west-2 = "uw2"
eu-west-1 = "ew1"
[gcloud]
format = '[$symbol$project]($style) '
symbol = "gcp:"
style = "bold blue"
[kubernetes]
disabled = false
format = '[$symbol$context(:$namespace)]($style) '
symbol = "k8s:"
style = "bold cyan"
[kubernetes.context_aliases]
"arn:aws:eks:*:*:cluster/prod-*" = "prod"
"arn:aws:eks:*:*:cluster/stage-*" = "stage"
[docker_context]
format = '[$symbol$context]($style) '
symbol = "docker:"
only_with_files = true
[terraform]
format = '[$symbol$workspace]($style) '
symbol = "tf:"
[character]
success_symbol = "[>](bold green)"
error_symbol = "[>](bold red)"
Preset Organization¶
Storing Multiple Presets¶
Keep multiple configurations and switch between them:
# Directory structure
~/.config/starship/
minimal.toml
developer.toml
server.toml
current.toml -> minimal.toml # symlink
Switch script:
#!/bin/bash
# ~/.local/bin/starship-preset
PRESET_DIR="$HOME/.config/starship"
CONFIG="$HOME/.config/starship.toml"
case "$1" in
minimal|developer|server)
cp "$PRESET_DIR/$1.toml" "$CONFIG"
echo "Switched to $1 preset"
;;
*)
echo "Usage: starship-preset [minimal|developer|server]"
;;
esac
Per-Machine Configuration¶
Use environment variables for machine-specific configs: