starship/starship
Presets
Starship ships a set of pre-baked configurations under docs/public/presets/toml/. Each one is a complete starship.toml that you can either preview or write to your config.
Listing and printing
starship preset --list # Show all preset names
starship preset gruvbox-rainbow # Print to stdout
starship preset gruvbox-rainbow -o ~/.config/starship.toml # Write to diskPresets are baked into the binary at compile time, so there's nothing to install separately.
Built-in presets (v1.25)
| Preset | What it sets up |
|---|---|
bracketed-segments |
Each module wrapped in [...] brackets |
catppuccin-powerline |
Catppuccin colors with powerline arrows |
gruvbox-rainbow |
Gruvbox palette, every module gets its own background color |
jetpack |
Compact two-line "rocket" prompt |
nerd-font-symbols |
Replaces emoji with Nerd Font glyphs (recommended for terminals with a Nerd Font) |
no-empty-icons |
Hides language icons when no version is detected |
no-nerd-font |
Falls back to plain ASCII characters |
no-runtime-versions |
Disables every toolchain version module |
pastel-powerline |
Pastel-color powerline |
plain-text-symbols |
Replaces emoji with plain text |
pure-preset |
Mimics the Pure zsh prompt |
tokyo-night |
Tokyo Night palette |
How a preset is applied
A preset is just a TOML file that overwrites your starship.toml. There is no merging or layering — the preset replaces whatever config you had. To start from a preset and keep customizing:
starship preset gruvbox-rainbow -o ~/.config/starship.toml- Edit
~/.config/starship.tomlto taste.
To combine presets you would have to copy and merge by hand.
How presets get into the binary
build.rs walks the preset directory at compile time and emits Rust code via shadow-rs:
pub fn get_preset_list<'a>() -> &'a [print::Preset] {
&[print::Preset("bracketed-segments"), /* ... */]
}
pub fn get_preset_content(name: &str) -> &[u8] {
match name {
"bracketed-segments" => include_bytes!(r"<absolute path>/bracketed-segments.toml"),
// ...
}
}This is why starship preset --list shows exactly the files that were in docs/public/presets/toml/ at build time, and why adding a new preset is just dropping a .toml file — no registration needed.
Preset itself is a clap::ValueEnum defined in src/print.rs; it pulls its variants from the build-generated get_preset_list so the CLI completion is accurate.
Schema reference
Each preset starts with a "$schema" line so editors can validate the file:
"$schema" = 'https://starship.rs/config-schema.json'The schema itself is generated from FullConfig via cargo run --features config-schema -- config-schema > .github/config-schema.json (CI enforces freshness).
See also
- Presets subsystem — code-level explanation.
- Configuration — what to do after you write a preset.
- The preset documentation pages at starship.rs/presets/.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.