POST · FIELD NOTE · BUILDING IN PUBLIC

Awesome Mac Terminal Setup

A modern macOS terminal environment …


A modern macOS terminal environment built for speed, readability, and daily developer productivity.

Awesome Mac Terminal Setup is my personal terminal setup packaged into a reusable installation project. It combines Ghostty, Zsh, Starship, Catppuccin Mocha, modern Rust-based CLI tools, fuzzy search, smart history, Git enhancements, and optional AI coding CLI support into one clean workflow.

The goal of this project is simple: turn a default macOS terminal into a polished developer workspace that looks consistent, feels fast, and reduces friction during daily coding.

Project Overview

This project provides a one-command setup script for configuring a modern Mac terminal environment. Instead of manually installing tools, copying config files, tuning shell behavior, and fixing theme inconsistencies one by one, this repository automates the setup process and deploys a complete terminal workflow.

The setup is built around three core layers:

  1. Ghostty as the terminal emulator
  2. Zsh as the interactive shell
  3. Starship as the customizable prompt

Around that foundation, the project adds modern command-line replacements such as eza, bat, fd, ripgrep, zoxide, btop, lazygit, delta, atuin, fzf, tldr, jq, and glow.

The result is a terminal that is not only visually consistent, but also more efficient for file navigation, Git work, code reading, command history search, and daily development.

Why I Built This

Most terminal setups grow slowly and become messy over time. A developer installs one tool, changes one config, adds one alias, then forgets what changed. After switching machines or reinstalling macOS, rebuilding the same workflow becomes painful.

I built this project to make my terminal setup reproducible.

The repository captures the tools, configurations, shell behavior, aliases, prompt design, Git settings, and theme choices in one place. This makes the setup easier to reinstall, maintain, share, and improve over time.

This project is also a practical infrastructure-style exercise: it treats a local development environment as something that should be version-controlled, documented, and repeatable.

Key Features

The setup focuses on three things: visual consistency, faster command-line workflows, and low-friction installation.

The visual system uses Catppuccin Mocha across the terminal, prompt, and Git diff viewer. This keeps the entire command-line experience consistent instead of having every tool display a different color scheme.

The shell experience is improved through Zsh plugins, autosuggestions, syntax highlighting, better completions, smart directory jumping, fuzzy file search, and searchable command history.

The Git workflow is also upgraded with lazygit for a terminal-based Git UI and delta for side-by-side, syntax-highlighted diffs.

Technical Architecture

The setup is organized as a layered terminal environment.

At the outer layer, Ghostty provides a GPU-accelerated terminal interface with JetBrainsMono Nerd Font and Catppuccin Mocha styling. Inside Ghostty, Zsh manages the interactive shell experience. Starship then provides a fast, structured, powerline-style prompt.

The Zsh layer includes plugins for autosuggestions, syntax highlighting, and expanded completions. Search and navigation are handled through fzf, fd, zoxide, and atuin.

The command-line tool layer replaces older Unix defaults with modern alternatives:

ls becomes eza
cat becomes bat
find becomes fd
grep becomes ripgrep
cd is enhanced by zoxide
top becomes btop
git diff is enhanced by delta
Git operations can be managed through lazygit

This structure makes the terminal feel like an integrated development interface rather than a collection of unrelated tools.

Installation Workflow

The project includes an install.sh script that automates the setup process.

The installer checks for Homebrew, installs the required CLI tools, installs Ghostty and JetBrainsMono Nerd Font, deploys configuration files, and backs up existing configs before replacing them.

The installer is designed to be safe to re-run. Existing configuration files are backed up with a timestamp before new versions are deployed, which makes experimentation less risky.

Basic installation:

git clone https://github.com/KaneYin/Awesome_Mac_Terminal_Setup.git
cd Awesome_Mac_Terminal_Setup
./install.sh

The project also supports different installation modes:

./install.sh

Installs tools and configs, then shows an interactive AI CLI menu.

./install.sh --all

Installs everything, including all AI CLIs and skills, without prompts.

./install.sh --no-ai

Installs terminal tools and configs only, skipping AI CLI setup.

Config Files

The project deploys a set of configuration files into the correct local locations.

The main shell behavior is controlled through .zshrc, including aliases, plugins, and tool initialization.

The Starship prompt layout is configured through .config/starship.toml.

Ghostty appearance settings are stored in .config/ghostty.save.

Git behavior is configured through .gitconfig, including delta as the Git pager for improved diffs.

Atuin shell history settings are stored in .config/atuin/config.toml.

The repository also includes a Claude Code custom theme file at .claude/themes/separated.json, which is deployed when Claude Code is selected during installation.

One important design decision is that the included .gitconfig does not hard-code a Git username or email. After installation, the user should set those values manually:

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

AI Coding CLI Support

This setup also includes optional support for AI coding tools.

During installation, the script can show an interactive menu that allows the user to select AI coding CLIs such as Claude Code, Codex, and Gemini CLI. If Claude Code is selected, the installer can also deploy the custom separated theme bundled with the repository.

This is useful because terminal-based AI coding tools can become visually hard to read when prompts, model responses, command output, and Git diffs all blend together. The custom theme helps separate interaction areas more clearly and makes AI-assisted terminal work easier to scan.

Tools Included

The setup includes a practical set of tools that improve common developer tasks.

eza improves directory listing with icons, Git status, and better formatting.

bat improves file viewing with syntax highlighting, line numbers, and Git change markers.

fd makes file search faster and easier than the traditional find command.

ripgrep provides fast recursive text search across projects.

zoxide replaces repetitive cd navigation with smart directory jumping.

btop provides a rich terminal system monitor.

lazygit adds a keyboard-driven Git interface inside the terminal.

delta improves Git diffs with side-by-side views, syntax highlighting, and line numbers.

fnm manages Node.js versions and can automatically switch versions when entering a project directory.

tldr provides simplified command documentation with practical examples.

jq makes JSON readable and scriptable from the command line.

glow renders Markdown directly inside the terminal.

Together, these tools make the terminal faster, cleaner, and more useful for real development work.

What I Learned

This project helped me think about developer tooling as a system rather than a set of isolated preferences.

A good terminal setup is not only about appearance. It also involves installation reliability, configuration structure, backup behavior, shell ergonomics, Git workflow, search speed, command discovery, and daily maintainability.

I also learned the value of documenting environment setup as code. By turning my personal terminal configuration into a GitHub project, I made the setup portable and easier to audit. This is especially useful when moving between machines or rebuilding a development environment from scratch.

Future Improvements

There are several directions I may continue improving.

First, I want to make the installer more modular so users can choose individual tool groups instead of selecting only broad install modes.

Second, I may add screenshots and visual documentation for each major tool so the README works as both an installation guide and a visual reference.

Third, I may add validation checks after installation to confirm that key tools, fonts, themes, and config files are correctly installed.

Finally, I may continue refining the AI CLI theme so terminal-based AI workflows are easier to read during long coding sessions.

Project Summary

Awesome Mac Terminal Setup is a reproducible macOS terminal configuration project. It packages my preferred developer terminal environment into a documented, installable, and reusable setup.

The project combines modern terminal aesthetics with practical command-line productivity. It improves navigation, search, Git workflow, file reading, Markdown rendering, shell history, system monitoring, and AI coding CLI usability.

For me, this project is both a personal productivity tool and a demonstration of how a developer environment can be treated like a real software project: version-controlled, documented, automated, and designed for repeatable use.

GitHub Repository

View the project on GitHub:

https://github.com/KaneYin/Awesome_Mac_Terminal_Setup