Starship
FreeOne config file, the same prompt in every shell
A cross-shell prompt that displays the current Git branch and dirty state, language runtime versions, cloud context, and the previous command's duration and exit code. Bash, Zsh, Fish, PowerShell and Nushell all read the same TOML configuration.
Why we picked it
ISC-licensed, 60,000 stars.
Everyone has fought this once: a string of \[\e[32m\] escapes in Bash, oh-my-zsh plus a theme in
Zsh, something else again in PowerShell. Change machines or change shells and it all starts over.
Starship lifts that layer out: one binary, one starship.toml, identical in every shell. Modules
appear only when relevant — the Rust version shows up inside a Rust project, the branch inside a Git
repository — instead of parking information you do not need on every line.
Showing the previous command's duration past a threshold is a small thing that earns its place for anyone running builds.
To be clear about:
- Icons need a Nerd Font, so the terminal font has to change. There are plain-text presets for those who would rather not.
- It runs detection on every prompt, which can lag on a very slow network filesystem; modules can be disabled individually.