Personal dotfiles for macOS. Configuration for zsh, tmux, Ghostty, AeroSpace, and more.
- macOS
- Homebrew
- A Nerd Font (for powerline glyphs and icons)
- Ghostty terminal (or any terminal with light/dark theme support)
- GNU Stow (
brew install stow)
git clone git@github.com:<user>/dotfiles.git ~/.dotfilesInstall Oh My Zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Install zsh-appearance-control (automatic light/dark mode switching):
git clone https://github.com/alberti42/zsh-appearance-control.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-appearance-controlInstall zsh-autosuggestions:
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsInstall zsh-syntax-highlighting:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlightingSymlink config files:
cd ~/.dotfiles && stow zshInstall Starship:
brew install starshipTwo config files handle light/dark theming. They are selected automatically by zsh-appearance-control. No symlinks needed; .zshrc points to them directly via STARSHIP_CONFIG.
zsh/starship-dark.toml- Nord color palettezsh/starship-light.toml- Doom Tomorrow Day color palette
Install tmux:
brew install tmuxInstall TPM (Tmux Plugin Manager):
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmSymlink the config:
cd ~/.dotfiles && stow tmuxStart tmux and install plugins:
Ctrl-Space I
This installs:
- nordtheme/tmux - Dark theme
- tmux-battery - Battery status
- tmux-cpu - CPU/RAM status
- tmux-resurrect - Session persistence
- tmux-continuum - Automatic session saving/restoring
A custom light theme for tmux that mirrors the Nord dark theme structure, using colors from the doom-tomorrow-day Emacs theme. Located at tmux/themes/:
doom-tomorrow-day.conf- Base colors, panes, messagesdoom-tomorrow-day-status.conf- Status bar with powerline glyphsdoom-tomorrow-day.tmux- Loader script (sources both files)
The theme is loaded automatically by the appearance switching system. To load it manually:
bash ~/.dotfiles/tmux/themes/doom-tomorrow-day.tmuxAutomatic theme switching across the terminal stack when macOS toggles between light and dark mode.
How it works:
- A launchd agent watches
~/Library/Preferences/.GlobalPreferences.plistfor changes - When macOS appearance changes, it runs
zsh/bin/appearance-watcher.sh - The watcher calls zsh-appearance-control (zac) dispatch
- zac triggers
zsh/bin/appearance-tmux-switch.sh(viaZAC_IO_CMD) to switch tmux themes - zac triggers the deferred callback in
.zshrcto switch the starship prompt config - Ghostty handles its own switching via
theme = light:doom-tomorrow-day,dark:doom-nord
Install the launchd agent:
ln -sf ~/.dotfiles/launchd/com.dotfiles.appearance-switch.plist \
~/Library/LaunchAgents/com.dotfiles.appearance-switch.plist
launchctl load ~/Library/LaunchAgents/com.dotfiles.appearance-switch.plistNote: The launchd plist uses a manual symlink since it needs to go into ~/Library/LaunchAgents/, not the home directory.
Verify it's running:
launchctl list | grep appearanceKey files:
| File | Purpose |
|---|---|
launchd/com.dotfiles.appearance-switch.plist |
launchd agent, triggers on appearance change |
zsh/bin/appearance-watcher.sh |
Reads current appearance, calls zac dispatch |
zsh/bin/appearance-tmux-switch.sh |
Switches tmux between Nord and doom-tomorrow-day |
tmux/themes/doom-tomorrow-day.* |
Custom light theme for tmux |
zsh/starship-dark.toml |
Starship prompt, Nord palette |
zsh/starship-light.toml |
Starship prompt, Tomorrow Day palette |
The prefix key is Ctrl-Space.
| Binding | Action |
|---|---|
Ctrl-Space I |
Install TPM plugins |
Ctrl-Space r |
Reload tmux config |
Ctrl-Space v |
Split pane vertically |
Ctrl-Space s |
Split pane horizontally |
Ctrl-Space h/j/k/l |
Navigate panes (vim-style) |
Shift-Left/Right |
Switch windows |
Alt-1..9 |
Jump to window by number |
Ctrl-Space Enter |
Enter copy mode |
Ctrl-Space Ctrl-Space |
Toggle last window |
~/.dotfiles/
aerospace/ AeroSpace window manager config
bash/ Bash config (legacy)
docs/ Design specs and implementation plans
gnupg/ GPG agent config
launchd/ launchd agents (symlinked to ~/Library/LaunchAgents/)
tmux/
.tmux.conf Tmux config (symlinked to ~/.tmux.conf)
themes/ Custom tmux themes (doom-tomorrow-day)
vim/ Vim/Neovim config
warp/ Warp terminal config
zsh/
.zshrc Zsh interactive config (symlinked to ~/.zshrc)
.zshenv Zsh environment variables (symlinked to ~/.zshenv)
bin/ Helper scripts (appearance switching)
starship-dark.toml Starship prompt config (dark)
starship-light.toml Starship prompt config (light)