Skip to main content

Starship Prompt

Starship is a minimal, fast, and customizable prompt for any shell. It's written in Rust and works across Bash, Zsh, Fish, PowerShell, and more.

The default configuration is already excellent, but I've tweaked mine to show exactly what I need when working across multiple projects and repositories.


My Configuration

~/.config/starship.toml
# https://starship.rs/config/
# Get editor completions based on the config schema
"$schema" = 'https://starship.rs/config-schema.json'

format = """👻 $directory$username$git_branch$git_status$git_commit$git_state$terraform$time
$character"""

# Inserts a blank line between shell prompts
add_newline = true

# Replace the '❯' symbol in the prompt with '➜'
[character] # The name of the module we are configuring is 'character'
success_symbol = '[➜](green) ' # The 'success_symbol' segment is being set to '➜' with the color 'bold green'

# Disable the package module, hiding it from the prompt completely
[package]
disabled = true

[aws]
disabled = true

[nodejs]
disabled = true

[git_status]
# format = '([\[$all_status$ahead_behind\]]($style) )'
format = '([〘 $all_status$ahead_behind 〙](blue) )'

conflicted = '🏳 '
ahead = '⬆${count} '
behind = '⬇${count} '
diverged = '😵 '
up_to_date = '🤗'
untracked = '🤷 '
stashed = '📦 '
modified = '📝 '
staged = '[++\($count\)](green)'
renamed = '👅'
deleted = '🗑 '


# show number of commits ahead
#ahead = "⬆${count} "
# show number of commits behind
#behind = "⬇${count} "
# stashed change
#stashed = ""

[directory]
truncate_to_repo = false

[time]
format = 'at [$time](green) '
time_format = '%l:%M %P'
disabled = false

[username]
show_always = true
format = "[$user](green) "

Key Features

Custom format line - Starts with 👻 followed by directory, username, git info, terraform status, and time. The character prompt appears on a new line for cleaner command entry.

Git status with emojis - Visual indicators make it easy to scan repository state at a glance:

  • 🏎💨 commits ahead
  • 😰 commits behind
  • 🤷 untracked files
  • 📦 stashed changes
  • 📝 modified files
  • 🗑 deleted files

Always-visible username and time - Helpful when working across multiple machines or reviewing terminal history later.

Disabled modules - I've turned off package, AWS, and Node.js modules since I don't need that information cluttering my prompt.

Full directory path - truncate_to_repo = false shows the complete path rather than truncating to the repository root.

The result is a prompt that gives me all the context I need without overwhelming the terminal. The emoji indicators let me quickly assess git state without reading text, and the two-line format keeps commands visually separated from the prompt info.