Fish Shell Themes - Best Prompts (Tide, Starship, Pure)

A comparison of Fish Shell prompt themes including Tide, Starship, Pure, and Hydro. How to install each one and pick the right prompt for your workflow.

Fish Shell Themes - Best Prompts (Tide, Starship, Pure)

Fish comes with a usable default prompt, but most people swap it out for something with more information — git branch, command duration, language versions, that kind of thing. I’ve tried most of the popular options and settled on a favorite, but the right choice depends on what you value.

This guide covers the four main prompt options for Fish, including built-in themes, and how to install each one.

Built-in Fish themes

Before you install anything, Fish has its own theme system. Run:

fish_config theme show

This prints available color themes directly in your terminal. To apply one:

fish_config theme choose dracula
fish_config theme save

For prompts specifically:

fish_config prompt show
fish_config prompt choose informative
fish_config prompt save

Fish ships with about a dozen prompt styles: default, informative, classic, disco, simple, and others. These are light on features (no async rendering, no language detection), but they load instantly and need no external dependencies.

You can also run fish_config without arguments to open a browser-based configuration tool where you can preview everything visually.

Tide

Tide is the most feature-rich Fish-native prompt. It’s what Powerlevel10k is to Zsh — async rendering, a configuration wizard, and deep git integration.

Install Tide

You need Fisher first:

fisher install IlanCosman/tide@v6

Then run the configuration wizard:

tide configure

The wizard walks you through:

  • Powerline style vs. plain text
  • One-line or two-line prompt
  • Icon style (Nerd Font required for icons)
  • Colors and spacing

It takes about 30 seconds and gives you a prompt that looks polished without manual editing.

What Tide shows

By default, Tide displays:

  • Current directory (smart truncation to the shortest unique prefix)
  • Git branch and status (untracked, modified, staged, ahead/behind)
  • Command duration (for slow commands)
  • Language versions (Node, Python, Rust, Go, etc.) when you’re in a relevant project
  • Time, jobs, and exit status on the right prompt

Why Tide stands out

Async rendering. Tide runs git status and other slow operations in the background. Your prompt appears instantly, and the git info fills in a moment later. On large repos, this makes a real difference.

Smart directory truncation. Instead of showing ~/D/w/p/myapp, Tide truncates to the shortest unique prefix: ~/Doc/w/p/myapp (because D could be Downloads or Documents). Tab-completing the truncated path restores the full name.

Nerd Font recommended. Install MesloLGS NF for the best icon support. Without a Nerd Font, Tide falls back to text-only mode, which still looks fine.

Customizing Tide

After the wizard, tweak individual settings:

# Change which items appear on the left and right
set --universal tide_left_prompt_items pwd git newline character
set --universal tide_right_prompt_items status cmd_duration context jobs node

# Change git status symbols
set --universal tide_git_icon ""

Run set --universal | grep tide to see all Tide variables.

Starship

Starship is a cross-shell prompt written in Rust. It works with Fish, Zsh, Bash, PowerShell, and more. If you use multiple shells or want to share a prompt config with teammates on different shells, Starship is the practical choice.

Install Starship

curl -sS https://starship.rs/install.sh | sh

Add to your Fish config:

# ~/.config/fish/config.fish
starship init fish | source

I have a dedicated guide on setting up Starship with Fish Shell with configuration examples and preset selection. If you’ve already set it up with Zsh (maybe following my Starship and Ghostty guide), the TOML config file carries over.

How Starship compares to Tide

Starship doesn’t have async rendering, but it’s fast enough that it rarely matters on normal-sized repos. The configuration is a single TOML file (~/.config/starship.toml) instead of universal variables, which some people find easier to version-control.

Starship also has presets: Tokyo Night, Catppuccin, Nerd Font Symbols, and others. Apply one with:

starship preset tokyo-night -o ~/.config/starship.toml

Pure

Pure is a port of the popular Zsh Pure prompt. It’s minimal — just your directory, git branch, and a character that turns red after a failed command.

Install Pure

fisher install pure-fish/pure

No configuration wizard. It works immediately with sensible defaults.

What Pure shows

  • Current directory
  • Git branch and dirty/clean status
  • Command duration (for long commands)
  • Username and hostname over SSH
  • Python virtualenv name when active
  • The prompt character

When to pick Pure

If you like a clean, quiet prompt that stays out of the way. Pure doesn’t show language versions or right-side information unless you enable them. It’s for people who want less on screen, not more.

Customizing Pure

Pure uses Fish variables for configuration:

set --universal pure_show_system_time true
set --universal pure_enable_single_line_prompt true
set --universal pure_show_jobs true

Hydro

Hydro is even more minimal than Pure. It’s made by Fisher’s author and shows git branch, command duration, and exit status. That’s about it.

Install Hydro

fisher install jorgebucaran/hydro

Hydro’s appeal is zero configuration and near-zero overhead. If you just want a git branch in your prompt without thinking about it, Hydro does that.

Comparison table

TideStarshipPureHydroBuilt-in
Async renderingYesNoPartialNoNo
Config wizardYesNoNoNoWeb UI
Cross-shellNo (Fish only)YesNo (Fish only)No (Fish only)No
Config formatUniversal varsTOML fileUniversal varsMinimalWeb UI / vars
Nerd Font neededRecommendedRecommendedNoNoNo
Language versionsYesYesNoNoNo
Git integrationDeepGoodBasicBasicNone
Setup time1 minute2-3 minutes30 seconds10 seconds30 seconds

My recommendation

Tide if Fish is your only shell and you want the best-looking, most informative prompt with zero lag. The wizard makes setup easy.

Starship if you use multiple shells or want a TOML config file you can version-control. I covered this in depth in my Starship + Fish guide.

Pure if you prefer minimalism and a proven design (it’s been popular in the Zsh world for years).

Hydro if you want the absolute minimum viable prompt.

Built-in if you don’t want to install anything extra and the default prompts are good enough.

I personally use Starship because I switch between Fish and Zsh on different machines. If I only used Fish, I’d probably pick Tide.