Personal macOS setup. Keyboard-driven, tiling, terminal-first.
Stack: AeroSpace (WM) · SketchyBar (bar) · JankyBorders (focus border) · Kitty (terminal) · LazyVim (editor) · tmux · Karabiner (Caps→Hyper) · zsh + Starship (prompt) · yazi (file manager) · btop (sysmon) · gh (GitHub CLI) · fastfetch
Deployed into $HOME with GNU Stow.
dotfiles/
├── .zshrc
├── bin/ # custom scripts (on $PATH via .zshrc)
│ └── tmux-sessionizer
└── .config/
├── aerospace/ # tiling WM + keybinds
├── borders/ # JankyBorders style
├── btop/ # gruvbox theme
├── fastfetch/
├── karabiner/ # Caps→Hyper, Hyper-key app launchers
├── kitty/ # gruvbox theme
├── nvim/ # LazyVim
├── sketchybar/ # sketchybarrc + items/ + plugins/
├── starship.toml # zsh prompt (gruvbox)
├── tmux/
└── yazi/ # yazi.toml + theme.toml + package.toml
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Clone this repo (needed for the Brewfile, and later for stow)
git clone https://github.com/chdrj/dotfiles.git ~/dotfiles
# Install everything — formulae, casks, and fonts — from the Brewfile
brew bundle --file=~/dotfiles/BrewfileThe full package list lives in
Brewfile. Add a tool there and re-runbrew bundleto keep the toolchain reproducible.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH/custom/plugins/zsh-syntax-highlighting
# zsh-autosuggestions is auto-cloned by .zshrc on first run.
# Prompt is Starship (installed via brew above); config lives at .config/starship.toml.# (repo already cloned in step 1)
# Back up anything that would conflict.
mkdir -p ~/dotfiles-backup
[ -f ~/.zshrc ] && mv ~/.zshrc ~/dotfiles-backup/
[ -f ~/.config/starship.toml ] && mv ~/.config/starship.toml ~/dotfiles-backup/
for d in aerospace borders fastfetch karabiner kitty nvim sketchybar tmux; do
[ -e ~/.config/$d ] && mv ~/.config/$d ~/dotfiles-backup/
done
stow -d ~ -t ~ -nv dotfiles # dry-run, verify
stow -d ~ -t ~ dotfiles # commitopen -a AeroSpace
brew services start sketchybar
open -a "Karabiner-Elements" # grant Input Monitoring on first launch
exec zsh# sketchybar-app-font: per-app workspace glyphs (not a brew cask).
# Download the latest sketchybar-app-font.ttf release into ~/Library/Fonts.
curl -fLo "$HOME/Library/Fonts/sketchybar-app-font.ttf" \
https://github.com/kvndrsslr/sketchybar-app-font/releases/latest/download/sketchybar-app-font.ttf
# yazi: install the gruvbox-dark flavor declared in .config/yazi/package.toml
ya pkg install
# gh: authenticate (browser flow, picks up the token in ~/.config/gh)
gh auth login| Action | Command / Keybind |
|---|---|
| Reload SketchyBar | sketchybar --reload |
| Reload AeroSpace | aerospace reload-config |
| Reload zsh | exec zsh |
| Hyper-key launchers | Hyper+T kitty · Hyper+B Vivaldi · Hyper+S Spotify |
| tmux sessionizer | Ctrl-f (zsh) or prefix+f (tmux) |
| Smart cd | z <substring> |
| File manager | yy (yazi, exits to selected dir) |
| System monitor | top (aliased to btop) |
| Open PR in browser | ghpr |
- Per-app workspace glyphs require
icon_map_fn.shfrom https://github.com/kvndrsslr/sketchybar-app-font. Drop into.config/sketchybar/plugins/andchmod +x. - Karabiner is symlinked per-file (only
karabiner.json), since Karabiner writesassets/andautomatic_backups/into its config dir. - Workspace → monitor assignment is the
for monitor … for sid …loop insketchybarrc. Edit for your own layout.
AeroSpace · SketchyBar · JankyBorders · LazyVim · sketchybar-app-font