This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a personal dotfiles repository containing configuration files for a development environment centered around:
- Terminal: Ghostty with Zellij multiplexer
- Shell: Zsh with custom configuration
- Editor: Neovim with extensive Lua configuration
- Coding agent: Pi configuration and agent setup under
home/.config/pi/ - Package Management: Homebrew + Mise for runtime management
home/- Contains all dotfiles that get symlinked to$HOMEbin/- Custom Rust binaries (Zellij runner and statusbar)script/- Installation and maintenance scriptshome/.config/- Main configuration directory with app-specific configs
init.sh- Main shell initialization scriptvariables.sh- Environment variablesshortcuts.sh- Custom aliases and functionsapps/- App-specific configuration (git, zellij, node, etc.)zsh/- Zsh-specific options and completions
init.lua- Entry point loading utils, theme, screen, keymaps, editor, options, and pluginslua/editor/- Core editor functionality moduleslua/editor/features/- Larger editor feature modules grouped under the editor namespacelua/plugins/- Plugin configurationslua/theme.lua- Custom theme implementationlua/keymaps.lua- Keymaps helperslua/options.lua- Neovim and Neovide optionslua/plugins.lua- Lazy plugin manager configlua/utils/- Shared utilities used across the configuration
config.kdl- Main Zellij configuration with custom keybindingslayouts/- Session layouts such asterminal.kdl,showcase.kdl, andd42.kdlthemes/- Custom themesplugins/- Built plugin artifacts such asstatusbar.wasm- Custom keybindings use Unicode symbols mapped in terminal config
# Install dotfiles, create symlinks, build binaries, copy the keyboard layout,
# ensure .hushlogin exists, and optionally restart the shell
script/install.sh
# Build only Zellij statusbar
cd bin/zellij/statusbar && cargo build --release
# Build only Zellij runner
cd bin/zellij/runner && cargo install --locked --path .# Build Zellij statusbar (WASM plugin)
cd bin/zellij/statusbar
cargo build --release
# Output: target/wasm32-wasip1/release/statusbar.wasm
# Build Zellij runner (session switcher)
cd bin/zellij/runner
cargo build --release
# Install: cargo install --locked --path .# Patch Berkeley Mono with Nerd Font icons
script/font/patch.sh- Edit files in
home/.config/directories - Changes are automatically available (files are symlinked)
- For shell changes, restart terminal or run
exec zsh - For Neovim changes, restart Neovim or reload configuration
- Session management via
zellij-runnercommand - Custom keybindings use Unicode symbols (see
config.kdl) - Layouts stored in
layouts/directory - Custom statusbar plugin built from
bin/zellij/statusbar/
- Plugin management via Lazy.nvim
- Custom theme in
lua/theme.lua - Editor functionality split into modules in
lua/editor/andlua/editor/features/ - Plugin modules organized under
lua/plugins/, includinglua/plugins/lsp/andlua/plugins/lsp/languages/
- Uses Mise for language runtime management
- Homebrew for package management
- Custom shortcuts and aliases in
shortcuts.sh - Environment variables in
variables.sh
- Custom keybindings use Unicode symbols mapped in Ghostty config
- Requires specific terminal configuration for proper operation
- Keybindings cleared and replaced with custom mappings
- Modular structure with clear separation of concerns
- Core editor modules live in
lua/editor/, with larger workflows inlua/editor/features/ - Plugin configuration lives in
lua/plugins/, including LSP-related code inlua/plugins/lsp/ - Custom utilities in
lua/utils/ - Screen-specific configurations in
lua/screen.lua - Type definitions in
lua/types.lua
No formal test suite. Verify changes by:
- Restarting affected applications
- Testing key functionality manually
- Checking for syntax errors in configuration files