This repo contains my daily driver setup on macOS: Alacritty + tmux + Neovim (LazyVim). It’s tuned for fast window/pane navigation, clipboard integration, and a rich Neovim keymap for search, snippets, notes, and utilities.
Quick Start
- Install Alacritty, tmux, Neovim (via Homebrew).
- Launch Alacritty; it auto-starts zsh and attaches/creates a tmux session.
- Use Command-based shortcuts in Alacritty to drive tmux; inside tmux, use
C-aas prefix. - Open Neovim and use
<leader>jprefixed keymaps for personal commands.
Alacritty
- Config:
alacritty/alacritty.toml:60 - Highlights
Cmd-ssendsCtrl-sto terminal for Neovim save:alacritty/alacritty.toml:63Cmd-Shift-ftoggles fullscreen:alacritty/alacritty.toml:82Cmd-asends tmux prefixC-a:alacritty/alacritty.toml:64Cmd-tnew tmux window,Cmd-[prev window,Cmd-]next window:alacritty/alacritty.toml:72Cmd-Shift-xinstant kill active pane/window via tmuxX:alacritty/alacritty.toml:80Cmd-1…9switch tmux windows directly:alacritty/alacritty.toml:84
- Shell integration: starts zsh and runs
tto attach tmux:alacritty/alacritty.toml:96
tmux
- Config:
tmux/.tmux.conf:1 - Prefix:
C-a(unbind defaultC-b):tmux/.tmux.conf:1 - Splits:
-vertical,|horizontal with cwd preserved:tmux/.tmux.conf:13,tmux/.tmux.conf:14 - Resize:
prefix + h/j/k/lresizes by 5:tmux/.tmux.conf:17 - Kill pane
xasks confirm:tmux/.tmux.conf:7Xinstant kill (pane if multiple; otherwise window):tmux/.tmux.conf:10
- Clipboard: copy-mode
ypipes to macOS clipboard:tmux/.tmux.conf:28 - Vim navigation passthrough (C-h/j/k/l between tmux panes and Neovim):
tmux/.tmux.conf:96 - Plugins via TPM: yank, copycat, resurrect, continuum (auto-restore), prefix-highlight, tmux-powerline, open:
tmux/.tmux.conf:71 - Session switch menu script:
tmux/scripts/session-menu.sh:1
Neovim (LazyVim)
- Entry:
nvim/init.lua:1autoloads LazyVim and alllua/user/*modules. - Options:
nvim/lua/config/options.lua:4- FZF as picker, animations off, autoformat off, spell on.
- Personal keymap prefix:
<leader>j:nvim/lua/config/keymaps.lua:2
Neovim Keymap Highlights
- Navigation/UI
- File tree:
<leader>eneotree reveal float:nvim/lua/config/keymaps.lua:57 - FZF launcher:
<leader>F:nvim/lua/config/keymaps.lua:59 - Buffers grep:
<leader>jba:nvim/lua/config/keymaps.lua:89 - Open files in
~via FZF:<leader>jfo:nvim/lua/config/keymaps.lua:426
- File tree:
- Daily notes
- Open goals:
<leader>jD:nvim/lua/config/keymaps.lua:67 - Open notes:
<leader>jN:nvim/lua/config/keymaps.lua:68
- Open goals:
- Clipboard helpers
- Copy path:
<leader>jf1abs,<leader>jf2rel,<leader>jf3name:nvim/lua/config/keymaps.lua:72
- Copy path:
- Tasks/Markdown
- Toggle checkbox:
<leader>jt0:nvim/lua/config/keymaps.lua:232 - Status stamps: done/bug/in-progress/etc:
<leader>jtx,tb,tp…:nvim/lua/config/keymaps.lua:164 - Bold/italic/strikethrough line:
<leader>jm5,jm6,jm4:nvim/lua/config/keymaps.lua:257 - Open task list:
<leader>jtdand add:<leader>jtn:nvim/lua/config/keymaps.lua:242
- Toggle checkbox:
- Grep by project roots
~/app:<leader>jfa,~/web:<leader>jfw, notes/snippets:<leader>jfx,jfs:nvim/lua/config/keymaps.lua:73
- Snippets (nvim-scissors)
- Add:
<leader>jsa, Edit:<leader>jse:nvim/lua/config/keymaps.lua:75
- Add:
- S3 utilities
- Upload current buffer:
<leader>jf7:nvim/lua/config/keymaps.lua:93 - Pick from screenshots dir:
<leader>jf6:nvim/lua/config/keymaps.lua:94 - Upload any file:
<leader>jf5:nvim/lua/config/keymaps.lua:95 - MOV→MP4 with external audio (YouTube-ready):
<leader>jf8:nvim/lua/config/keymaps.lua:298
- Upload current buffer:
- Editing utilities
- Remove inner whitespace, keep indent:
<leader>jrw:nvim/lua/config/keymaps.lua:406 - Search/replace prompts:
<leader>jR,jrc,jrd,jra:nvim/lua/config/keymaps.lua:458 - Strip +/- from selected lines: visual
<leader>jrm:nvim/lua/config/keymaps.lua:499 - Tabs/spaces toggle:
<leader>jb<tab>, force spaces:jbs, force tabs:jbt:nvim/lua/config/keymaps.lua:687 - Reveal file in Finder:
<leader>jbf:nvim/lua/config/keymaps.lua:691 - Print buffer via TextEdit:
<leader>jp:nvim/lua/config/keymaps.lua:716
- Remove inner whitespace, keep indent:
- Git helpers
- Open modified files in new tabs:
<leader>jgo:nvim/lua/config/keymaps.lua:654
- Open modified files in new tabs:
- App launcher
- Spotlight-like app/folder open:
<Leader>A:nvim/lua/config/keymaps.lua:780
- Spotlight-like app/folder open:
Workflow
- Windowing: Use Alacritty
Cmd-1…9,Cmd-[,Cmd-]to move between tmux windows.Cmd-tto create new tmux window. - Panes: Split with
prefix + -(vertical) orprefix + |(horizontal). Resize withprefix + h/j/k/l. - Kill:
Cmd-Shift-xfor instant kill via tmuxX, orprefix + xfor confirm. - Copy: In tmux copy-mode press
yto yank to macOS clipboard. - Neovim: Use
<leader>jgroups for tasks, grep, snippets, S3 uploads, and utilities.
Scripts
- Session menu:
tmux/scripts/session-menu.sh:1shows a popup menu to switch sessions.
Setup Notes
- Fonts: JetBrainsMono Nerd Font:
alacritty/alacritty.toml:29 - Terminal type:
TERM=alacritty:alacritty/alacritty.toml:1 - Fullscreen on launch:
startup_mode = "SimpleFullscreen":alacritty/alacritty.toml:18 - Mouse + vi copy-mode in tmux enabled:
tmux/.tmux.conf:40
Optional Terminals
- WezTerm and Ghostty also work well. If you prefer them, replicate the tmux passthrough and window bindings accordingly.
Troubleshooting
- Clipboard not working: ensure
pbcopyexists; tmux config also triesxclip/wl-copyfor Linux:tmux/.tmux.conf:42 - S3 uploads: requires
awsCLI and proper credentials; ffmpeg for video conversion.
Enjoy the workflow, and tweak bindings to taste.
