all setup
Terminal Setup
Zsh, Oh My Zsh, Starship, and Ghostty — my shell configuration end to end.
2 min read
Prerequisites
- Zsh — pre-installed on macOS; on Linux install via your package manager.
- Git — version control, required by Oh My Zsh's install script.
- A Nerd Font — for prompt icons to render correctly (e.g. FiraCode Nerd Font).
Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Install Plugins
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingThen enable them in ~/.zshrc:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)Install Starship Prompt
curl -sS https://starship.rs/install.sh | shAdd it to the end of ~/.zshrc:
eval "$(starship init zsh)"Starship Config
A minimal ~/.config/starship.toml — shows directory, git status, and language versions only when relevant:
add_newline = false
[git_branch]
symbol = " "
[git_status]
style = "yellow"
[nodejs]
symbol = " "
[package]
disabled = trueGhostty Config
I use Ghostty as the terminal emulator itself. My ~/.config/ghostty/config:
# The syntax is "key = value". The whitespace around the
# equals doesn't matter.
# Color theme — palettes live in ~/.config/ghostty/themes/
# nord (active) — arctic bluish, transparent
# claude-linen — warm linen, WCAG-AA verified palette
# claude-parchment — refined, low-glare warm paper
# claude-cream — original near-white cream
# Switch back any time: theme = claude-cream (or claude-parchment)
theme = nord
# Transparency — lower opacity = more see-through. Blur softens the desktop
# behind it (macOS). Tune background-opacity to taste (0.80–0.95).
background-opacity = 0.95
background-blur = 40
cursor-style = block
cursor-style-blink = false
cursor-opacity = 0.85
adjust-cursor-thickness = 4
# Font rendering
adjust-cell-height = 8%
# Comments start with a `#` and are only valid on their own line.
# Blank lines are ignored!
keybind = ctrl+z=close_surface
keybind = ctrl+d=new_split:right
# Empty values reset the configuration to the default value
font-family = "Geist Mono"
font-family = "Noto Sans Mono"
font-size = 14Restart your terminal and you're done.
share this post