Turbocharge Your Mac Terminal: The Ultimate Starship and Ghostty Setup Guide

Transform your Mac terminal with Ghostty + Starship: install, pick a preset, apply a clean prompt config, and add productivity tools like zoxide and eza.

Turbocharge Your Mac Terminal: The Ultimate Starship and Ghostty Setup Guide

This guide walks through setting up Ghostty (a GPU-accelerated terminal) and Starship (a cross-shell prompt) on your Mac. I’ll start with a Ghostty config, apply a Starship preset (Tokyo Night or Catppuccin Powerline), then add practical tools like zoxide and eza (the modern replacement for ls). I’ll also show you how to edit your ~/.zshrc without accidentally duplicating init lines.

If you want a Ghostty-first overview covering features, the inspector, and multiplexer vs tmux, check out Ghostty Terminal: A Complete Setup Guide for Modern Mac Development.

TL;DR: Quick setup (copy/paste)

Run these, then follow the sections below for the “why” and optional upgrades:

brew install --cask ghostty
brew install starship zoxide eza
brew install font-meslo-lg-nerd-font

Add Starship and zoxide once to your ~/.zshrc:

open -e ~/.zshrc

Add:

eval "$(starship init zsh)"
eval "$(zoxide init zsh)"

Pick a Starship preset:

mkdir -p ~/.config
starship preset tokyo-night -o ~/.config/starship.toml
# or:
# starship preset catppuccin-powerline -o ~/.config/starship.toml

Reload:

source ~/.zshrc

Now continue for the recommended Ghostty config, safer .zshrc editing notes, and Starship tweaks.

Why Ghostty and Starship?

Ghostty is a terminal emulator written in Zig. It uses GPU acceleration, works natively on macOS, and has a straightforward config system. You can learn more at ghostty.org.

Starship works with Zsh (the default macOS shell since Catalina) and other shells. It provides a prompt that shows Git status, directory paths, programming language versions, and other context. You can explore presets and configuration at starship.rs.

Step 1: Install Ghostty on Your Mac

Install Ghostty using Homebrew:

brew install --cask ghostty

This installs Ghostty into your Applications folder. If you don’t have Homebrew, set it up first:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Launch Ghostty from Applications or type ghostty in your current terminal. GPU acceleration makes it noticeably faster than alternatives. For other installation methods, visit ghostty.org/download.

Step 2: Install a Nerd Font for Enhanced Visuals

Starship needs a font with extensive glyph support. Meslo Nerd Font works well and has clear icons.

Install it via Homebrew:

brew install font-meslo-lg-nerd-font

Check the font’s installation in Font Book by searching for “Meslo.” For other options, see nerdfonts.com.

Step 3: Configure Ghostty for Optimal Appearance

Create the config directory first (Ghostty won’t read a file that doesn’t exist):

mkdir -p ~/.config/ghostty

Create or edit the config file:

touch ~/.config/ghostty/config
open -e ~/.config/ghostty/config

Add this configuration:

font-family = MesloLGS Nerd Font Mono
font-size = 16
background-opacity = 0.85
theme = Argonaut

Quick checks:

  • List fonts: ghostty +list-fonts
  • List themes: ghostty +list-themes

This configuration sets MesloLGS Nerd Font Mono as the font for clear icon rendering, uses 16pt size for readability, applies 85% background opacity, and selects the Argonaut theme. List available themes with ghostty +list-themes or fonts with ghostty +list-fonts.

Save the file and restart Ghostty to apply changes.

Step 4: Install Starship for a Dynamic Prompt

Starship adds contextual information to your prompt. Install it with Homebrew:

brew install starship

Integrate Starship with Zsh by adding it to your ~/.zshrc.

Instead of blindly appending with echo ... >> (which can create duplicates), open your config and add the init line once:

open -e ~/.zshrc

Add:

eval "$(starship init zsh)"

Then reload:

source ~/.zshrc

Verify:

starship --version

For other shells, see Starship’s installation guide.

Step 5: Apply Starship Presets for Instant Style

Starship presets provide ready-to-use configurations. Two popular options are Tokyo Night and Catppuccin Powerline. Browse all presets at starship.rs/presets.

Option 1: Tokyo Night Preset

The Tokyo Night preset is a dark theme with purples and blues.

Apply it:

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

This creates starship.toml in ~/.config/. Inspect it:

open -e ~/.config/starship.toml

The preset includes modules for Git status, current directory, and programming language versions. Restart your terminal or run source ~/.zshrc to see the result.

Option 2: Catppuccin Powerline Preset

The Catppuccin Powerline preset has a softer, pastel color scheme with a powerline-style prompt.

Apply it:

mkdir -p ~/.config
starship preset catppuccin-powerline -o ~/.config/starship.toml

This overwrites the existing starship.toml. Reload your shell with source ~/.zshrc to apply it.

Presets are a good start, but a couple of changes usually make the prompt more practical: shorter paths, optional timestamps, and command duration for slow commands.

Open the config file:

open -e ~/.config/starship.toml

Paste these additions at the end. They work with both Tokyo Night and Catppuccin.

# Keep the prompt responsive if anything external is slow
command_timeout = 1000

[directory]
truncation_length = 3
truncate_to_repo = true

[cmd_duration]
min_time = 500
format = "took [$duration]($style) "
style = "yellow bold"

Reload:

source ~/.zshrc

Optional: show time (useful in SSH sessions)

[time]
disabled = false
format = "[$time]($style) "
time_format = "%R"

Optional: show battery (laptops)

[battery]
disabled = false

Optional: Git status styling

If you want clearer Git signals:

[git_status]
style = "bold purple"

For a comprehensive list of modules and options, see Starship’s configuration documentation.

If you prefer a more information-dense prompt (username/host, Node, etc.), add modules one at a time to keep the prompt fast and readable.

For example, enable Node.js when doing Node work:

[nodejs]
disabled = false

If your prompt feels slow, disable modules you don’t need and keep command_timeout set.

Step 7: Install zoxide for Smarter Navigation

zoxide learns your most frequently used directories and lets you jump to them with z instead of cd.

Install it:

brew install zoxide

Add it to your ~/.zshrc:

echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc
source ~/.zshrc

Use z instead of cd. For example, z proj jumps to your ~/Projects directory if you use it often. Zoxide prioritizes your most-visited directories over time. Learn more at zoxide’s documentation.

Step 8: Install eza for Prettier Directory Listings

Note: eza is the modern replacement for ls (what people mean when they reference “exa” in older tutorials).

Replace the default ls command with eza, which provides colorized, icon-rich directory listings.

Install it:

brew install eza

Add aliases to your ~/.zshrc (add these once, don’t repeatedly append them):

open -e ~/.zshrc

Add:

alias ls="eza --icons"
alias ll="eza -l --icons"
alias la="eza -la --icons"

Reload:

source ~/.zshrc

These aliases:

  • ls: Lists files with icons for file types
  • ll: Shows a detailed list with icons
  • la: Includes hidden files in the detailed list

Explore eza’s features at eza’s website.

Step 9: Create Custom Commands with Aliases

Streamline your workflow with custom aliases in your ~/.zshrc.

Add these to ~/.zshrc:

# Quick edit configuration files
alias editstarship="vim ~/.config/starship.toml"
alias editghost="vim ~/.config/ghostty/config"

# Git shortcuts
alias gs="git status"
alias ga="git add"
alias gc="git commit -m"
alias gp="git push"

# Quick directory navigation
alias dev="cd ~/Development"
alias docs="cd ~/Documents"

Apply:

source ~/.zshrc

These aliases:

  • Let you quickly edit Starship and Ghostty configs (editstarship, editghost)
  • Simplify Git commands (gs, ga, gc, gp)
  • Provide fast navigation to common directories (dev, docs)

Step 10: Bonus Zsh Plugins for Enhanced Productivity

Add zsh-autosuggestions and zsh-syntax-highlighting for better command input and error detection.

Install:

brew install zsh-autosuggestions zsh-syntax-highlighting

Add to your ~/.zshrc (place syntax-highlighting near the end of the file):

open -e ~/.zshrc

Add:

source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Reload:

source ~/.zshrc
  • zsh-autosuggestions: Suggests commands based on your history (gray text). Accept with the right arrow key.
  • zsh-syntax-highlighting: Highlights valid commands in green and invalid ones in red, catching errors before execution.

For detailed setup guides, see Enable Command Autocomplete in Zsh and Enable Syntax Highlighting in Zsh.

Troubleshooting: Ghostty Gotchas

Error: 'xterm-ghostty': unknown terminal type

Some tools don’t recognize Ghostty’s terminal type. Fix it for the current session:

export TERM=xterm-256color

For a permanent solution, set this only for SSH so you don’t change behavior locally.

Add to your ~/.zshrc:

open -e ~/.zshrc

Add:

# Some servers don't know about Ghostty's TERM entry
if [[ -n "$SSH_CONNECTION" ]]; then
  export TERM=xterm-256color
fi

Reload:

source ~/.zshrc

FAQ

Starship vs Powerlevel10k: which should you use?

Starship works across multiple shells and machines with minimal setup. Powerlevel10k is great if you’re using only Zsh and want deep Zsh-native customization.

Do you still need tmux if Ghostty has multiplexing?

For local workflows, Ghostty’s built-in multiplexing works well. Tmux is still useful if you need to detach/attach remote sessions, run long jobs on servers, or need a mature ecosystem and portability.

My prompt icons look broken—what's wrong?

Check the font. Make sure Ghostty is set to a Nerd Font (like MesloLGS Nerd Font Mono) and restart the terminal.

Why do some remote servers show 'unknown terminal type'?

Some environments don’t ship Ghostty’s terminfo entry. Setting TERM=xterm-256color for SSH sessions fixes this.

Conclusion

Your Mac terminal now has Ghostty and Starship, a Starship preset you like, minimal tweaks, and practical tools like zoxide, eza, and sensible aliases.

Next steps:

For more ideas, see toolhunt.net’s Mac apps section or Starship’s preset gallery.

If you’re interested in using Starship with Fish Shell instead of Zsh, I have a dedicated guide: How to set up Starship prompt with Fish Shell. Also see Fish Shell vs Zsh if you’re considering switching shells.