My config files for maintaining a consistent dev environment across machines.
- Editor: NeoVim, with a lightweight Vim fallback config (no dependencies) for maximum portability.
- Multiplexer: Tmux
- Main Terminal: Ghostty (Previously: WezTerm)
- Shell Prompt: Starship
- Color Theme: Nord across all tools, switchable via environment variables in
.zshenv. - Window Management: Rectangle + Karabiner-Elements for keyboard-driven window resizing and app switching.
- File Manager: Yazi (Previously: Ranger)
Note
This repo also includes configs for tools I no longer actively use (WezTerm, kitty, iTerm, VSCode, Ranger). I keep them around as reference and for easy reactivation — their symlinks and Brewfile entries are simply commented out.
I find macOS window management extremely frustrating: Repeatedly pressing Cmd+Tab to switch apps or having to reach for the mouse to click and drag. It's painfully slow and breaks my flow. To streamline my workflow, I built a custom setup using Karabiner-Elements and Rectangle. Together, they let me manage windows and switch apps with minimal mental overhead, at maxium speed, entirely from the keyboard. Here's how it works:
The Tab key acts as a regular Tab when tapped, but when held it becomes a modifier (hyperkey) that unlocks two layers:
- Window layer (
Tab + W + ...): Resize and position windows via Rectangle. E.g.Tab + W + Hfor left half,Tab + W + Lfor right half. - Expose layer (
Tab + E + ...): Jump directly to a specific app. E.g.Tab + E + Jfor browser,Tab + E + Kfor terminal.
To set up these dotfiles on your system, run:
./install.shThen follow the on-screen prompts.
To remove all symlinks created by the installation script:
./scripts/symlinks.sh --deleteThis only removes the symlinks, not the actual config files, so you can easily revert if needed.
- Place the config file in the appropriate directory within this repo.
- Add a symlink entry in
symlinks.conf. - If needed, update
install.shto handle any additional setup.
Software is managed via Homebrew. To add a formula or cask, update homebrew/Brewfile and run ./scripts/brew_install_custom.sh. For pinning a specific version, find its Ruby script in the commit history of the official Homebrew GitHub repo and place it in homebrew/custom-casks/ or homebrew/custom-formulae/.
