Personal terminal configuration dotfiles for Mac and Linux. Covers zsh, fish, bash, tmux, and Ghostty.
Each tool has its own subdirectory with a setup script. Scripts must be run from their own subdirectory (symlinks use $(pwd)):
cd zsh && ./setup.sh # installs oh-my-zsh + plugins, symlinks zshrc
cd fish && ./setup # installs oh-my-fish + kawasaki theme, symlinks fish configs
cd tmux && ./setup # installs tpm, symlinks tmux.conf
cd ghostty && ./setup.sh # symlinks ghostty/config to ~/.config/ghostty/configFor bash, manually copy files to your home directory:
| File | Destination |
|---|---|
bash_profile |
~/.bash_profile (Mac) |
bashrc |
~/.bashrc (Linux) |
Uses Oh My Zsh with ZSH_THEME="" (no omz theme). The prompt is defined inline using PROMPT/RPROMPT variables with the git_super_status function from the git-prompt plugin.
Plugins: git, git-prompt, fzf, zsh-autosuggestions, zsh-syntax-highlighting
Uses Oh My Fish with the kawasaki theme. Theme variables in fish/omf/init.fish override kawasaki defaults to match the zsh color scheme.
256-color prompt configuration. Includes SSH host autocomplete and common aliases.
Consistent palette across zsh and fish:
| Element | Color | Hex |
|---|---|---|
| User | Blue | #087fff |
| Host | Teal | #1eb980 |
Separator (@) |
Purple | #b15dff |
Prompt character ($) |
Hot pink | #ff3399 |
- Prefix remapped to
C-a - Pane splits:
|(vertical) and-(horizontal), preserving current path - Vi copy mode:
vto select,yto yank - Mouse: off by default, toggle with
prefix + m - Status bar: session name, username, hostname, time, date
- Plugin manager: tpm โ after setup, activate plugins inside tmux with
prefix + I
- Minimal config โ iTerm2 Tango Dark/Light themes, Noto Mono for Powerline 12pt, 85% opacity, bar cursor.
- Customized icon - https://github.com/jasonlong/ghostty-theme-icons
All shell configs (zshrc, bashrc, bash_profile) automatically add ~/.local/bin to $PATH if the directory exists and is not already included:
[[ -d "$HOME/.local/bin" && ":$PATH:" != *":$HOME/.local/bin:"* ]] && export PATH="$HOME/.local/bin:$PATH"For fish, the equivalent is handled via fish_add_path in fish/omf/init.fish.
Scripts for testing terminal color support (no install needed):
./colors.sh # 8-bit 256-color palette
./colors256.sh # compact 256-color grid
./truecolors1.sh # truecolor gradient test
python3 colors.py # Python color outputColor references: