Mac Terminal Setup
Step-by-step guide to transform your macOS terminal into a beautiful, powerful development environment
Lab
MmattbratosAuthors
This guide walks you through building a beautiful, efficient terminal setup on macOS—from the terminal app and shell, to prompt, fonts, colors, and plugins.
Overview and Goals
By the end of this guide, you will have:
- A modern terminal app with tabs, panes, and profiles
- A powerful shell (
zsh) with autosuggestions and syntax highlighting - A stylish prompt with Git info and useful status indicators
- Nerd Font and ligature support for pretty icons and smooth code rendering
- A set of plugins and tools that make daily development more pleasant
You can follow the whole guide or just pick the parts you like.
Prerequisites
You should have:
- A Mac running macOS 11+ (Big Sur or later is ideal, but most works on Catalina+)
- Homebrew installed, or willingness to install it
- Basic familiarity with the terminal (running commands, editing simple files)
If you don’t have Homebrew yet, install it first:
bash
Then follow the on-screen instructions. After installation, ensure brew works:
bash
Step 1: Choose a Modern Terminal App
The built-in Terminal.app is fine, but alternatives look and feel better and have nicer features.
Popular choices:
- Ghostty (modern, GPU-accelerated, fast, config-driven)
- iTerm2 (classic, very configurable)
- Warp (modern, AI-assisted, batteries-included)
- Alacritty or WezTerm (GPU-accelerated, very fast)
For this guide, we'll use Ghostty, a blazingly fast, native macOS terminal app that's GPU-accelerated and highly configurable through a simple config file.
Install Ghostty
bash
After install:
- Open Ghostty from Applications or Spotlight
- Right-click the Dock icon → Options → Keep in Dock if you like
Configure Ghostty
Ghostty uses a configuration file instead of GUI settings. Create the config directory and file:
bash
Open the config file in your favorite editor:
bash
Add some basic settings to start:
bash
Save the file. Ghostty will automatically reload when you change the config. We'll add font and color settings in the next steps.
Step 2: Use zsh as Your Shell
Modern macOS uses zsh as the default shell. Confirm with:
bash
If you see something like /bin/zsh, you’re good.
If not, and you’re still on bash or something else, list shells:
bash
Then change to zsh:
bash
Log out and log back in (or restart iTerm2) for the change to take effect.
Step 3: Install a Nerd Font (for Icons and Pretty Glyphs)
Many modern prompts use icons from Nerd Fonts. Install one so your prompt and plugins don’t show weird boxes.
A great choice is MesloLGS Nerd Font (the one Powerlevel10k recommends) or FiraCode Nerd Font (with ligatures).
bash
Set the Font in Ghostty
Open your Ghostty config file:
bash
Add the font settings:
bash
Save the file. Ghostty will automatically reload and apply the new font.
Now your terminal can display icons and powerline symbols correctly.
Step 4: Install Oh My Zsh (Zsh Framework)
Oh My Zsh is a framework that makes managing your zsh configuration easier, with themes and plugins.
Install Oh My Zsh:
bash
This will:
- Back up your old
.zshrcif you had one - Create a new
~/.zshrc - Switch your shell to use Oh My Zsh
After install, open a new iTerm2 window or run:
bash
Step 5: Install a Beautiful Prompt (Powerlevel10k)
Powerlevel10k is a fast, feature-rich theme for zsh with Git info, icons, and more.
Install Powerlevel10k
bash
Then add it as your theme in ~/.zshrc.
Open ~/.zshrc in a text editor (use nano if unsure):
bash
Find the line with ZSH_THEME= and change it to:
bash
Save and exit (Ctrl+O, Enter, then Ctrl+X in nano). Reload the config:
bash
Run the Powerlevel10k Configuration Wizard
On first load, Powerlevel10k usually starts an interactive wizard. If it doesn’t, start it manually:
bash
The wizard will:
- Ask if you can see certain symbols (this checks that the Nerd Font works)
- Let you choose prompt style (lean, classic, rainbow, etc.)
- Let you pick which segments to show (time, Git status, exit code, etc.)
Pick whatever looks good to you. You can always rerun p10k configure later.
If you ever want to tweak manually, your config lives in ~/.p10k.zsh.
Step 6: Add Useful Zsh Plugins
Oh My Zsh supports plugins that add autocompletion, suggestions, and more.
Recommended Plugins
git– aliases and helpers for Gitzsh-autosuggestions– gray "ghost" suggestions as you typezsh-syntax-highlighting– colors commands as you typefzf– fuzzy finder (for history and files)
Install Plugins
1. zsh-autosuggestions
bash
2. zsh-syntax-highlighting
bash
3. fzf (and keybindings)
bash
During installation, answer y to enabling key bindings and completion if prompted.
Enable Plugins in .zshrc
Open ~/.zshrc:
bash
Find the line starting with plugins= and update it. For example:
bash
Important: zsh-syntax-highlighting must generally be loaded last. If you later add more plugins, keep it at the end of the list.
Save the file and reload:
bash
Now you should see:
- Light gray suggestions as you type (accept with
Right ArroworEnd) - Colored commands and arguments
- Fuzzy history/file search with
Ctrl+R(from fzf)
Step 7: Color Schemes and Transparency
A good color scheme makes your terminal easier to read and more pleasant to look at.
Configure Colors in Ghostty
Ghostty comes with many built-in themes. You can see available themes by running:
bash
To use a built-in theme, add this to your ~/.config/ghostty/config:
bash
Custom Color Schemes
You can also define custom colors in your config file. Here's an example with the popular Catppuccin Mocha theme:
bash
Adjust Transparency
We already set transparency earlier, but you can fine-tune it in your config:
bash
Use transparency sparingly; too much makes text hard to read. A value between 0.90-0.98 usually looks great.
Step 8: Quality-of-Life Aliases and Functions
You can make your terminal more productive with a few handy aliases in ~/.zshrc.
Open ~/.zshrc and add something like this near the bottom:
bash
Save and reload:
bash
Now ll, gs, etc., will just work.
Step 9: Optional – Tmux for Tabs and Panes
If you like working with multiple panes and persistent sessions, tmux is great.
Install tmux:
bash
Basic usage:
- Start:
tmux - Split window vertically:
Ctrl+B, then% - Split window horizontally:
Ctrl+B, then" - Switch panes:
Ctrl+B, then arrow keys - Detach session:
Ctrl+B, thend - List sessions:
tmux ls - Attach session:
tmux attach -t <name>
You can theme tmux to match your colors, but that’s beyond this core guide. Look up popular configs like gpakosz/.tmux if you’re curious.
Step 10: Backup and Sync Your Config
Once you like your setup, keep it safe.
Key files to back up:
~/.config/ghostty/config(Ghostty configuration)~/.zshrc(zsh configuration)~/.p10k.zsh(Powerlevel10k config)~/.tmux.conf(if using tmux)- Any custom scripts or functions in
~/.oh-my-zsh/custom/
You can create a simple Git repo to sync config across machines:
bash
Push this to a private GitHub repo and pull it on other machines. When restoring, remember to put the ghostty-config file back to ~/.config/ghostty/config.
Common Pitfalls and Fixes
Icons or Symbols Look Broken
- Ensure you set a Nerd Font in your Ghostty config (e.g.,
font-family = "MesloLGS Nerd Font") - Double-check the exact font name matches what's installed (use
brew list --caskto verify) - Restart Ghostty after changing the font in the config
Colors Look Weird or Washed Out
- Confirm you set a theme in your
~/.config/ghostty/configfile - Make sure there are no conflicting color settings in your shell config (check
~/.zshrc) - Try a different built-in theme using
theme = "ThemeName"
zsh-Autosuggestions Not Working
- Make sure the plugin folder exists in
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions - Confirm
zsh-autosuggestionsis listed in theplugins=(...)line - Run
source ~/.zshrc
zsh-Syntax-Highlighting Not Working
- Ensure
zsh-syntax-highlightingis the last plugin in the list - Confirm the cloned directory name matches exactly
Quick Recap Checklist
You've set up an awesome Mac terminal if:
- You're using Ghostty (or another modern terminal app)
- Your shell is
zsh - Ghostty config file is set up at
~/.config/ghostty/config - Oh My Zsh is installed and managing your config
- Powerlevel10k is your theme, and the wizard completed successfully
- A Nerd Font is configured in Ghostty, and icons show correctly
- Plugins like autosuggestions, syntax highlighting, and fzf work
- You have a color scheme you love and a few useful aliases
If any box is unchecked, revisit that step in the guide.
Mark this as complete to save it on your profile