Notes for anyone (or any agent) changing this dotfiles repo: conventions we rely on and things that took a while to get right.
- User settings and keybindings still live in JSON, even when the Glass UI hides the old “Terminal → Integrated” tree. Edit via Cmd+Shift+P → “Preferences: Open User Settings (JSON)” or the files under
~/Library/Application Support/Cursor/User/. This repo symlinkscursor-settings.jsonandcursor-keybindings.jsonthere from theMakefilesynctarget. - Custom keybindings for the Agent / Composer must use Glass command IDs, not only legacy VS Code commands. In diagnostics, entries may show a
g.exec.*label; the real IDs are theglass.*strings (e.g.glass.focusInputto focus the agent prompt,glass.focusInTerminalto focus the terminal).composer.focusComposerandworkbench.action.focusAuxiliaryBarwere unreliable inside Glass compared to those. - Order and
whenclauses matter. For Cmd+H, we useeditorTextFocus(not bareeditorFocus) for “focus sidebar” so a terminal-as-editor-tab does not steal the chord. Composer / auxiliary-bar rules are listed before the generic editor rule so the Composer prompt does not get treated as “editor text only.” - Integrated terminal + Fish: match Ghostty-style behavior by defining an explicit
terminal.integrated.profiles.osxentry forfishwithargs": ["-l"](login shell), a concretepathto the binary (e.g./opt/homebrew/bin/fishon Apple Silicon; use/usr/local/bin/fishon Intel Homebrew if needed), plusterminal.integrated.inheritEnv": true. Without-l, Fish could start with a different environment than in Ghostty.
- Config is a single
init.lua(symlinked to~/.config/nvim/init.lua). Plugins are declared withvim.pack.add({ ... })— Neovim 0.12’s built-in package manager (vim.pack, also documented as the native plugin workflow in the 0.12 release). This repo does not use lazy.nvim or packer.nvim; do not assume those APIs. - For upstream details, see the official docs: Neovim 0.12 news and
:help pack. There is also a practical overview in A Guide to vim.pack (Neovim built-in plugin manager) (Evgeni Chasnovski).
Makefilesync: creates expected dirs and symlinks fish, nvim, ghostty, tmux, Cursor user JSON, etc. Runmake syncon a new machine before expecting links to exist.- Fish:
config.fishandfish/functions/are symlinked into~/.config/fish/. - Ghostty: config symlinked to
~/.config/ghostty/configfromghostty.config.