A comprehensive guide to replicate my terminal setup with Ghostty, Starship prompt, Zsh, and custom themes.
- macOS (this guide is macOS-specific)
- Homebrew package manager
# Clone this repository
git clone https://github.com/yourusername/terminal-config-guide.git
cd terminal-config-guide
# Install JetBrains Mono Nerd Font
brew install font-jetbrains-mono-nerd-font
# Install Ghostty terminal emulator
brew install --cask ghostty
# Copy Ghostty config and themes
mkdir -p ~/.config/ghostty
cp ghostty/config ~/.config/ghostty/config
cp -r ghostty/themes ~/.config/ghostty/
# Install Oh My Zsh framework
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install zsh-autosuggestions plugin
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# Install fast-syntax-highlighting plugin
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
# Install zsh-vi-mode plugin
git clone https://github.com/jeffreytse/zsh-vi-mode ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-vi-mode
# Install zsh-defer plugin
git clone https://github.com/romkatv/zsh-defer.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-defer
# Install Starship prompt
brew install starship
# Copy Starship configuration
cp configs/starship.toml ~/.config/starship.toml
# Copy minimal zsh configuration (or merge with your existing .zshrc)
cp configs/.zshrc-minimal ~/.zshrc
# Reload shell configuration
source ~/.zshrc
# Optional: Install FZF for fuzzy finding
brew install fzf
# Optional: Install Atuin for advanced history search
brew install atuin
# Optional: Install Carapace for better completions
brew install carapaceDone! Open a new Ghostty terminal window to see your new setup.
For detailed explanations and customization options, see the sections below.
Option 1: Homebrew (Recommended)
brew install font-jetbrains-mono-nerd-fontOption 2: Manual Download
- Download: JetBrains Mono Nerd Font
- Search for
JetBrainsMono.zipin the assets - Extract and install the
.ttffiles by double-clicking them
Alternative Font: IosevkaTerm Nerd Font
brew install font-iosevka-term-nerd-fontOfficial Website:
Homebrew:
brew install --cask ghosttyGitHub Releases:
- Create config directory:
mkdir -p ~/.config/ghostty-
Copy the
configfile from this repo to~/.config/ghostty/config -
Copy the
themesdirectory to~/.config/ghostty/themes/
Key Features:
- Font: JetBrains Mono Nerd Font, size 21
- Active Theme: Night Owl
- Shell integration with zsh
- Custom split pane keybindings
- Opacity and alpha blending settings
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"1. zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions2. fast-syntax-highlighting
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting3. zsh-vi-mode
git clone https://github.com/jeffreytse/zsh-vi-mode \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-vi-mode4. zsh-defer
git clone https://github.com/romkatv/zsh-defer.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-deferUse the minimal .zshrc configuration from this repo, which includes:
- Plugin initialization
- Vi-mode settings (
jkto escape,Ctrl+Lto accept suggestions) - Basic PATH and environment variables
brew install starship-
Copy
starship.tomlfrom this repo to~/.config/starship.toml -
Add to your
.zshrc:
eval "$(starship init zsh)"Features:
- Gradient modern color palette (coral → orange → yellow → teal → blue → purple)
- OS icon and username display
- Directory with icons
- Git branch and status
- Language version indicators (Node, PHP, Python, Rust, etc.)
- Custom vim mode indicators with Nerd Font icons
These tools significantly enhance your terminal workflow but aren't required for the basic setup.
What it does:
FZF is a blazing-fast command-line fuzzy finder that lets you quickly search through files, command history, processes, and more with interactive filtering.
Installation:
brew install fzfConfiguration:
Add to your .zshrc:
# FZF integration
source <(fzf --zsh)
# Optional: Bind Ctrl+T to file search widget
bindkey '^T' fzf-file-widgetKey Features:
Ctrl+R: Search command history interactivelyCtrl+T: Fuzzy find files in current directoryAlt+C: Fuzzy find and cd into directories- Works with any list input via pipe:
ls | fzf
Customization (Optional):
# Add to .zshrc for better defaults
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'What it does:
Atuin replaces your default shell history with a searchable, syncable SQLite database. It provides context-aware history search with timestamps, directories, and duration tracking.
Installation:
brew install atuinConfiguration:
- Initialize Atuin:
atuin init zsh- Add to your
.zshrc:
# Atuin history search
eval "$(atuin init zsh)"
# Custom keybindings (vi-mode compatible)
bindkey -M viins '^r' atuin-search # Ctrl+R in insert mode
bindkey -M vicmd '/' atuin-search # / in normal mode- (Optional) Register for sync:
atuin register -u <your-username> -e <your-email>
atuin login -u <your-username>
atuin syncKey Features:
- Full-text search across all command history
- Shows command duration and exit codes
- Sync history across multiple machines
- Filter by directory or session
- Privacy-focused (optional encrypted sync)
Example Usage:
- Press
Ctrl+R→ Type partial command → Fuzzy search through history - Filter by directory:
Atuinonly shows commands run in current dir
What it does:
Carapace is a multi-shell completion generator that provides intelligent, context-aware completions for 1000+ CLI tools. It bridges completions from Fish, Bash, and Zsh.
Installation:
brew install carapaceConfiguration:
Add to your .zshrc:
# Carapace completion engine
export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense'
source <(carapace _carapace)Key Features:
- Rich completions for tools like
git,docker,npm,cargo, etc. - Dynamic argument suggestions (e.g., branch names, file paths)
- Multi-shell bridge support
- Faster than native completions in many cases
Example:
# Type and press TAB for intelligent suggestions:
git checkout <TAB> # Shows branches
docker ps <TAB> # Shows container options
npm run <TAB> # Shows package.json scripts| Tool | Use Case | Install If... |
|---|---|---|
| FZF | File/history search | You frequently search files or history |
| Atuin | Advanced history | You want searchable, syncable history across machines |
| Carapace | Better completions | You use many CLI tools and want smarter TAB completions |
Recommended: Start with FZF (most universally useful), then add Atuin if you like the enhanced history search.
✅ Ghostty terminal with Night Owl theme
✅ JetBrains Mono Nerd Font with icons
✅ Starship gradient prompt with git/language info
✅ Zsh with syntax highlighting + autosuggestions
✅ Vi-mode keybindings (jk escape, Ctrl+L accept)
✅ Split pane keybindings (Super/Ctrl+Shift+hjkl)
- Ensure you've installed a Nerd Font and set it in Ghostty config
- Restart Ghostty after font installation
- Verify
eval "$(starship init zsh)"is in your.zshrc - Run
source ~/.zshrcto reload
- Ensure plugins are installed in
~/.oh-my-zsh/custom/plugins/ - Check that they're listed in the
plugins=()array in.zshrc
~/.config/
├── ghostty/
│ ├── config
│ └── themes/
│ ├── night-owl
│ ├── everforest-light
│ └── noctis-azureus
└── starship.toml
~/.zshrc
MIT

