Open-Source Wikis

/

Starship

/

Features

/

Presets

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 disk

Presets 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:

  1. starship preset gruvbox-rainbow -o ~/.config/starship.toml
  2. Edit ~/.config/starship.toml to 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

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Presets – Starship wiki | Factory