This repo contains the dotfiles for my MacOS system.
Most tools are installed by setup.sh via Homebrew (and a few via npm/git).
| Tool | Install | Description |
|---|---|---|
| Homebrew | brew |
Package manager for macOS |
| GNU Stow | brew |
Symlink manager for dotfiles |
| Kitty | official installer | GPU-based terminal emulator |
| cmux | brew --cask |
Native macOS terminal for AI coding agents |
| Zsh | macOS | Shell and interactive environment |
| Neovim | brew |
Vim-based text editor (nvim) |
| Tmux | brew |
Terminal multiplexer |
| Tmux Plugin Manager | git |
Tmux plugin manager (tpm) |
| Sketchybar | brew |
macOS status bar replacement |
| Lua | brew |
Runtime for Sketchybar scripting |
| SwitchAudioSource | brew |
Switch macOS audio devices (SwitchAudioSource) |
| NowPlaying CLI | brew |
Now Playing metadata (for Sketchybar) |
| SbarLua | git |
Lua API for Sketchybar |
| Yabai | brew |
Tiling window manager for macOS |
| Skhd | brew |
Hotkey daemon for macOS |
| Yazi | brew |
Terminal file manager |
| Lazygit | brew |
Terminal UI for git operations |
| Eza | brew |
Modern ls replacement |
| Zoxide | brew |
Smarter cd replacement |
| Direnv | brew |
Per-directory environment loader |
| Ripgrep | brew |
Fast text search (rg) |
| Fzf | brew |
Fuzzy finder |
| Fd | brew |
Fast find alternative |
| Jq | brew |
JSON processor |
| 7zip | brew |
Archive tool (7zz) |
| FFmpeg | brew |
Media toolkit |
| ImageMagick | brew |
Image processing tools |
| Poppler | brew |
PDF utilities (pdfinfo, pdftotext, ...) |
| Bat | brew |
cat replacement with syntax highlighting |
| Gh | brew |
GitHub CLI |
| Fastfetch | brew |
System info summary |
| Cloc | brew |
Count lines of code |
| Dust | brew |
du alternative |
| Macmon | brew |
System monitor (TUI) |
| Terminal-notifier | brew |
Send macOS notifications from CLI |
| Mos | brew --cask |
Smooth mouse/scroll wheel tuning |
| Pearcleaner | brew --cask |
App uninstaller + leftover cleanup |
| OpenCommit | npm -g |
LLM-assisted commit messages (oco) |
| Uv | brew |
Python package/venv manager |
Important
Please disable SIP before running the setup script.
Before everything, shut down your Mac and hold the power button for a while to boot into recovery mode.
Then, run the following command to disable SIP:
csrutil disableThen, pull the repo and enter the folder
git clone git@github.com:BiboyQG/dotfiles.git && cd dotfilesNext, we run the setup script
zsh setup.shThis will:
- Symlink the dotfiles into place (via
stow --adopt) - Install dependencies via Homebrew
- Install kitty with the official installer
- Install nvm, Node LTS, and npm-based tools
- Configure yabai sudoers when sudo is available
- Restart yabai, skhd, and sketchybar
Some tmux behavior in this repo is optimized for “session slots” (fast switching / moving windows):
- Sessions are auto-renamed to
<index>-<label>(example:1-dot,2-spreadsheet-build) - Rename the current session label with
<prefix> + .(the prompt omits the numeric prefix) - Create a new session with
Ctrl+s(keeps numbering contiguous) - Switch sessions with
F1..F10(in Kitty,⌘1..⌘0sendsF1..F10to tmux) - Move the current window to session slot with
<prefix> + 1..0
Shell helpers:
ta <label>attaches by label (example:ta dotattaches to1-dot)ta <idx>attaches by slot (example:ta 1)tlslists sessions
Ctrl+s is bound in tmux, so XON/XOFF is disabled in interactive shells to avoid terminal “freezing”.
You are all set!
To make our life easier, some useful aliases are defined in .zshrc:
| Alias | Command | Description |
|---|---|---|
| ll | eza -alh --icons | Enhanced file listing with icons and details |
| ssh | kitten ssh | SSH through Kitty terminal |
| s | fastfetch | System information display |
| l | lazygit | Terminal Git UI |
| y | yazi function | File manager with directory changing support |
| c | claude | Claude Code CLI |
| tn | tmux new -s | Create a new tmux session |
| ta | ta <label|idx> | Attach to a tmux session |
| cat | bat | Cat with wings |