Configuration files for ZSH, Neovim, TMUX, Kitty, Alacritty, and macOS window management.
This dotfiles repository provides:
- Shell environment (ZSH) with custom plugins and prompt
- Terminal multiplexer (TMUX) with session persistence
- Text editor (Neovim) with IDE-like features
- Terminal emulators (Kitty, Alacritty) with theme support
- Window management (Yabai, skhd) for macOS tiling
- Light/dark theme switching across applications
- AI integration with LLM tools and aider
There's 3 ways in which you can use this, depending on how much you think you'll be customizing.
One of the key features is that this implementation stays in sync across all your machines. So depending on how much you'd like to customize your configuration, you have a few options:
-
Little Customization: Just clone this repo and jump to Installation.
-
Mild Customization: Fork this repo, and clone your own fork. Keep an eye on this repo for bugfixes and other improvements that you'd like to incorporate into your fork. Then jump to Installation.
-
Most Customization: Building your own dotfiles from scratch! Read through these docs, watch the video above, star this repo, and create your own dotfiles! You can add this repository as a git module and source the parts you like.
If you're unsure, just read the docs, watch the video, clone this repository, and jump to Installation.
Once the repo is cloned, execute the deploy script:
./deploy
This script guides you through the following:
- Checks for and installs required packages (zsh, neovim, tmux, etc.)
- Installs optional helpful packages (exa, bat, fzf, etc.)
- Sets zsh as your default shell (if not already)
- Backs up your existing configuration files
- Initializes git submodules for plugins
- Sets up symbolic links for all configuration files
- Installs Neovim plugins using Lazy package manager
- Installs global npm and pip packages for development
- Git
- A supported package manager (apt, brew, pacman, dnf, etc.)
- Admin/sudo access for installing packages
After installation:
- Restart your terminal or run
zsh - Open Neovim to complete plugin installation
- Check tmux with
tmux newortmux attach
- Custom prompt with contextual plugins
- Auto-suggestions and syntax highlighting
- Enhanced history management and searching
- Vi-mode for command line editing
- Directory navigation shortcuts
- Custom aliases and functions
- Modern Lua-based configuration
- Language Server Protocol (LSP) integration
- Syntax highlighting and code formatting
- Git integration with signify
- Code completion and snippets
- Distraction-free writing mode
- Session persistence with tmux-resurrect
- Mouse support for selection and scrolling
- Custom status bar with system information
- Automatic theme switching (light/dark)
- Vim-style keybindings for navigation
- Clipboard integration
- Kitty and Alacritty configurations
- Consistent themes across terminals
- Custom font settings with Nerd Fonts
- GPU acceleration for performance
- Yabai for tiling window management
- skhd for keyboard shortcuts
- Spacebar for status information
- Custom workspace layouts
- Multi-display support
- vifm file manager configuration
- ranger file browser with image previews
- Theme switching between light/dark modes
- Custom scripts for common workflows
- AI integration with aider and LLM tools
| Keybinding | Action |
|---|---|
Ctrl-o |
Open file with fzf |
Ctrl-u |
Navigate up directory |
Ctrl-g |
Go to directory with fzf |
Ctrl-p |
Edit file in Neovim with fzf |
Ctrl-s |
Prefix command with sudo |
Ctrl-n |
Open notes |
| Keybinding | Application |
|---|---|
Cmd-Return |
Launch terminal |
Cmd-Shift-Return |
Launch browser |
Cmd-F or RCmd-Return |
Launch vifm file manager |
Cmd-V |
Launch Neovim |
| Keybinding | Helper |
|---|---|
Cmd-Shift-U |
Serial port utilities |
Cmd-Shift-M |
Tmux session manager |
Cmd-Shift-Y |
Y.VM manager |
Cmd-Shift-H |
"How Do I" helper |
Cmd-Shift-@ |
Reminder utility |
Cmd-Shift-# |
Quick note |
| Keybinding | Action |
|---|---|
Alt-[Zz] |
Toggle fullscreen/section fullscreen |
Alt-b |
Toggle status bar |
Meh-R (Ctrl-Alt-Shift-R) |
Reload yabai, skhd, spacebar |
Alt-x |
Mirror on x-axis |
Alt-y |
Mirror on y-axis |
Alt-o |
Toggle split orientation |
Alt-Shift-[hjkl] |
Move window in direction |
Alt-Cmd-[hjkl] |
Resize window |
Alt-Ctrl-[hjkl] |
Warp window in direction |
Alt-Shift-[qw] |
Move window to adjacent space |
Alt-Shift-Space |
Toggle float for window |
Alt-[Ff] |
Toggle float for space |
Alt-s |
Toggle sticky window |
Alt-t |
Toggle topmost window |
Alt-p |
Toggle PIP mode (sticky+topmost) |
Alt-Shift-Cmd-[hjkl] |
Fill left/center/full/right |
Ctrl-[123] |
Focus display 1/2/3 |
Ctrl-Cmd-[qw] |
Focus prev/next display |
Ctrl-Shift-[123] |
Move space to display 1/2/3 |
Alt-[1-9] |
Select space 1-9 |
Ctrl-Shift-[qw] |
Move space backward/forward |
Cmd-Shift-c |
Create new space |
Cmd-Alt-c |
Create space and move window to it |
Cmd-Shift-w |
Destroy current space |
| Keybinding | Action |
|---|---|
<Space> |
Leader key |
q[abc] |
Record macro into register a, b, or c |
H |
Show documentation for symbol under cursor |
[c ]c |
Navigate between git hunks |
[g ]g |
Navigate between diagnostics |
<leader>i |
Git blame |
<leader>hp |
Preview git hunk |
<leader>hs |
Stage git hunk |
<leader>hu |
Undo git hunk |
Ctrl-K |
Format selected code |
- zsh-autosuggestions: Suggests commands as you type based on history
- zsh-syntax-highlighting: Syntax highlighting for shell commands
- oh-my-zsh: Framework for managing zsh configuration
- vi-mode: Vim keybindings for command line editing
- tmux-jump: EasyMotion-like navigation
- tmux-resurrect: Save and restore tmux sessions
- tmux-continuum: Automatic session saving
The dotfiles support automatic theme switching based on macOS appearance settings, as well as manual toggling between light and dark themes. This affects:
- Terminal colors (Kitty, Alacritty)
- TMUX appearance
- Neovim colorscheme
- System appearance
To manually switch themes, use the switch_theme script or press appropriate keybinding.
-
Terminal colors look wrong
- Ensure terminal supports 24-bit color
- Check
$TERMis set correctly (tmux-256color) - Try reloading theme:
kitty_reloadorswitch_theme
-
Fonts missing icons
- Install Nerd Fonts via deploy script
- Check terminal is using a Nerd Font
-
Keybindings not working
- For yabai/skhd: run
skhd --restartandyabai --restart - For tmux: check prefix key is backtick (`)
- For zsh: check if keybinding conflicts with terminal app
- For yabai/skhd: run
-
LSP servers not working
- Run
:LspInfoin Neovim to check status - Install missing language servers manually
- Check if language server is in PATH
- Run
For more help or to report issues, please open an issue on the GitHub repository.