Mac Terminal Setup

Step-by-step guide to transform your macOS terminal into a beautiful, powerful development environment

Authors

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:

  1. Ghostty (modern, GPU-accelerated, fast, config-driven)
  2. iTerm2 (classic, very configurable)
  3. Warp (modern, AI-assisted, batteries-included)
  4. 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 .zshrc if 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.

  • git – aliases and helpers for Git
  • zsh-autosuggestions – gray "ghost" suggestions as you type
  • zsh-syntax-highlighting – colors commands as you type
  • fzf – 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 Arrow or End)
  • 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, then d
  • 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 --cask to 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/config file
  • 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-autosuggestions is listed in the plugins=(...) line
  • Run source ~/.zshrc

zsh-Syntax-Highlighting Not Working

  • Ensure zsh-syntax-highlighting is 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 as complete?

Mark this as complete to save it on your profile

Guide completed 🎉