---
title: "Turbocharge Your Mac Terminal: The Ultimate Starship and Ghostty Setup Guide"
description: "Transform your Mac terminal with Ghostty + Starship: install, pick a preset, apply a clean prompt config, and add productivity tools like zoxide and eza."
date: 2025-12-18
categories: ["vps"]
tags: ["starship","ghostty"]
---

import YouTubeEmbed from "../../layouts/components/widgets/YouTubeEmbed.astro";

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](/ghostty-terminal/)**.

If you are going beyond prompt tweaks and want a terminal layout built around AI coding agents, browser automation, and notifications, I also wrote a dedicated guide to **[cmux Terminal](/cmux-terminal/)**.

## TL;DR: Quick setup (copy/paste)

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

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

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

```bash
open -e ~/.zshrc
```

Add:

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

Pick a Starship preset:

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

Reload:

```bash
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](https://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](https://starship.rs/).

If you later decide you want Ghostty-style rendering plus vertical workspaces, agent notifications, and a built-in browser, have a look at [cmux](/cmux-terminal/).

<YouTubeEmbed
  url="https://www.youtube.com/embed/W77CPoZxLWI"
  label="Dominate Mac Terminal: Starship and Ghostty Setup Guide"
/>


## Step 1: Install Ghostty on Your Mac

Install Ghostty using Homebrew:

```bash
brew install --cask ghostty
```

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

```bash
/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](https://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:

```bash
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](https://www.nerdfonts.com/).

## Step 3: Configure Ghostty for Optimal Appearance

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

```bash
mkdir -p ~/.config/ghostty
```

Create or edit the config file:

```bash
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:

```bash
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:

```bash
open -e ~/.zshrc
```

Add:

```bash
eval "$(starship init zsh)"
```

Then reload:

```bash
source ~/.zshrc
```

Verify:

```bash
starship --version
```

For other shells, see [Starship's installation guide](https://starship.rs/guide/#installation).

## 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](https://starship.rs/presets/).

### Option 1: Tokyo Night Preset

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

Apply it:

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

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

```bash
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:

```bash
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.

## Step 6: Tweak Your Starship Config (recommended, minimal changes)

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:

```bash
open -e ~/.config/starship.toml
```

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

### Recommended baseline tweaks

```toml
# 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:

```bash
source ~/.zshrc
```

### Optional: show time (useful in SSH sessions)

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

### Optional: show battery (laptops)

```toml
[battery]
disabled = false
```

### Optional: Git status styling

If you want clearer Git signals:

```toml
[git_status]
style = "bold purple"
```

For a comprehensive list of modules and options, see [Starship's configuration documentation](https://starship.rs/config/).

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:

```toml
[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:

```bash
brew install zoxide
```

Add it to your `~/.zshrc`:

```bash
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](https://github.com/ajeetdsouza/zoxide).

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

```bash
brew install eza
```

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

```bash
open -e ~/.zshrc
```

Add:

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

Reload:

```bash
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](https://eza.rocks/).

## Step 9: Create Custom Commands with Aliases

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

Add these to `~/.zshrc`:

```bash
# 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:

```bash
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:

```bash
brew install zsh-autosuggestions zsh-syntax-highlighting
```

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

```bash
open -e ~/.zshrc
```

Add:

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

Reload:

```bash
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](https://www.bitdoze.com/enable-command-autocomplete-in-zsh/) and [Enable Syntax Highlighting in Zsh](https://www.bitdoze.com/enable-syntax-highlighting-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:

```bash
export TERM=xterm-256color
```

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

Add to your `~/.zshrc`:

```bash
open -e ~/.zshrc
```

Add:

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

Reload:

```bash
source ~/.zshrc
```

## FAQ

<Accordion label="Starship vs Powerlevel10k: which should you use?" group="faq">
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.
</Accordion>

<Accordion label="Do you still need tmux if Ghostty has multiplexing?" group="faq">
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.
</Accordion>

<Accordion label="My prompt icons look broken—what's wrong?" group="faq">
Check the font. Make sure Ghostty is set to a Nerd Font (like MesloLGS Nerd Font Mono) and restart the terminal.
</Accordion>

<Accordion label="Why do some remote servers show 'unknown terminal type'?" group="faq">
Some environments don't ship Ghostty's terminfo entry. Setting `TERM=xterm-256color` for SSH sessions fixes this.
</Accordion>

## 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:
- Explore Ghostty capabilities (themes, inspector, shaders)
- Keep your Starship config lean by adding modules only when you need them
- For a Ghostty overview and feature tour, read: **[Ghostty Terminal: A Complete Setup Guide for Modern Mac Development](/ghostty-terminal/)**

For more ideas, see [toolhunt.net's Mac apps section](https://toolhunt.net/mac/) or Starship's [preset gallery](https://starship.rs/presets/).

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](/fish-shell-starship-prompt/). Also see [Fish Shell vs Zsh](/fish-shell-vs-zsh/) if you're considering switching shells.