My personal Starship prompt configuration.
The prompt is split into three lines:
| Line | Content |
|---|---|
┌─ |
OS icon · hostname (SSH only) · username · directory · battery · command duration |
│ |
Git branch · git status · active language/runtime modules |
└ |
Input character (green ❯ on success, red ❯ on error) |
Example in other project with git branch and status tracking, package version tracking and Python version and virtual environment tracking
Screenshots taken with FiraCode Nerd Font and Tokyo Night theme.
- Install Starship → starship.rs/guide
- Configure Starship → starship.rs/config
- Advanced options (env vars, per-directory configs) → starship.rs/advanced-config
Once Starship is set up, copy starship.toml to ~/.config/starship.toml, or point the STARSHIP_CONFIG environment variable to it — see Config File Location.
⚠️ Requires a Nerd Font installed and set as your terminal font. Without it, most icons will appear as missing glyphs.
The prompt uses box-drawing characters to visually separate context information from the input line, keeping things readable even when many modules are active.
Five threshold levels with colour-coded icons and distinct charging/discharging symbols:
| Charge | Style |
|---|---|
| ≤ 99 % | 🟢 Green |
| ≤ 80 % | 🔵 Blue |
| ≤ 60 % | 🩵 Cyan |
| ≤ 40 % | 🟡 Yellow |
| ≤ 20 % | 🔴 Red |
An OS-specific Nerd Font icon is shown for every major Linux distribution, macOS, and Windows — useful when working across multiple machines or inside containers.
Compact, symbol-based git status with explicit counts:
| Symbol | Meaning |
|---|---|
⇡N |
N commits ahead |
⇣N |
N commits behind |
⇕⇡N⇣N |
Diverged |
!=N |
Conflicts |
≡N |
Stashed |
✘N |
Deleted |
»N |
Renamed |
~N |
Modified |
+N |
Staged |
?N |
Untracked |
All language modules use a consistent (icon version) format and are only shown when the relevant project files are detected in the current directory.
- Enable the clock: find
[time], adddisabled = false, then add$timeto theformatstring where you want it to appear (e.g. on the first line after$cmd_duration). - Shorten the path: change
truncation_lengthin[directory](currently2). - Speed up slow repos: lower
scan_timeout(currently100ms). - Hide the username: set
show_always = falsein[username].


