{"id":26068275,"url":"https://github.com/kbrdn1/dotfiles","last_synced_at":"2026-04-07T09:31:24.755Z","repository":{"id":230396078,"uuid":"778891941","full_name":"kbrdn1/dotfiles","owner":"kbrdn1","description":"My personal OS X dotfiles.","archived":false,"fork":false,"pushed_at":"2026-03-26T11:36:39.000Z","size":16610,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-27T04:34:33.096Z","etag":null,"topics":["bat","brew","chezmoi","dotfiles","ghostty","home-manager","nix","omz","p10k","sketchybar","skhd","superfile","tmux","zed","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kbrdn1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-28T16:01:49.000Z","updated_at":"2026-03-26T11:36:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"d2f9f2d6-6796-43b8-a72b-2b33f730676d","html_url":"https://github.com/kbrdn1/dotfiles","commit_stats":null,"previous_names":["kbrdn1/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kbrdn1/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbrdn1%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbrdn1%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbrdn1%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbrdn1%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kbrdn1","download_url":"https://codeload.github.com/kbrdn1/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kbrdn1%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31507942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bat","brew","chezmoi","dotfiles","ghostty","home-manager","nix","omz","p10k","sketchybar","skhd","superfile","tmux","zed","zsh"],"created_at":"2025-03-08T22:22:29.201Z","updated_at":"2026-04-07T09:31:24.748Z","avatar_url":"https://github.com/kbrdn1.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\nWelcome to my dotfiles repository! This repository is managed using [Chezmoi](https://www.chezmoi.io/) and [Nix Home Manager](https://github.com/nix-community/home-manager).\n\n\u003cimg width=\"1512\" alt=\"Preview\" src=\"https://github.com/kbrdn1/dotfiles/blob/main/preview.png\"\u003e\n\n## Table of Contents 📚\n\n- [Stack Overview 📦](#stack-overview-)\n- [Sketchybar Themes 🎨](#sketchybar-themes-)\n- [Package Management 🛠️](#package-management-)\n- [CLI Tools 💻](#cli-tools-)\n- [GUI Applications 🖥️](#gui-applications-)\n- [Aliases \u0026 Functions 🔧](#aliases--functions-)\n- [Window Manager (AeroSpace) 🪟](#window-manager-aerospace-)\n- [Shortcuts \u0026 Keybindings ⌨️](#shortcuts--keybindings-)\n- [Neovim Configuration 📝](#neovim-configuration-)\n- [Zed Configuration ⚡](#zed-configuration-)\n- [Installation 📥](#installation-)\n- [Acknowledgments 🙏](#acknowledgments-)\n- [License 📄](#license-)\n\n## Stack Overview 📦\n\n| Layer | Tool | Purpose |\n|-------|------|---------|\n| **Package Manager** | Nix + Home Manager 24.11 | Declarative CLI tools (70+ packages) |\n| **GUI Apps** | Homebrew Casks | GUI applications and system tools |\n| **Dotfiles** | Chezmoi | Configuration file management |\n| **Shell** | Zsh + Oh-My-Zsh | Interactive shell with plugins |\n| **Theme** | Powerlevel10k | Shell prompt theme |\n| **Primary Editor** | Zed | Modern code editor with AI integration |\n| **Secondary Editor** | Neovim + LazyVim | Terminal editor with LSP, Claude Code integration |\n| **Terminal** | Ghostty + Kitty + Tmux | GPU terminals with multiplexer (Claude Dark theme) |\n| **Window Manager** | AeroSpace + Karabiner-Elements | Tiling window manager (no SIP required) |\n| **Menu Bar** | Sketchybar | Custom menu bar with 6 themes |\n| **File Manager** | Yazi + Superfile | Terminal file managers |\n| **Music** | MPD + rmpc | Music player daemon with TUI client |\n\n## Sketchybar Themes 🎨\n\n| Theme | Style | Accent Color | Description |\n|-------|-------|--------------|-------------|\n| **Claude Dark** ⭐ | Dark | `#D4825D` (copper) | Warm, elegant theme (default) |\n| **Claude Light** | Light | `#C15F3C` (copper) | Light version for bright environments |\n| **Blueberry Dark** | Dark | `#27E8A7` (mint) | Fresh blue/violet palette |\n| **Catppuccin** | Dark | Pastel | Modern pastel theme |\n| **Tokyo Night** | Dark | Blue | Popular VS Code theme port |\n| **Nord** | Dark | Cyan | Arctic, bluish color palette |\n\n### Theme Commands\n\n| Command | Description |\n|---------|-------------|\n| `~/.config/sketchybar/change_theme.sh \u003ctheme\u003e` | Change to specified theme |\n| `~/.config/sketchybar/preview_theme.sh` | Preview all available themes |\n\n## Package Management 🛠️\n\n| Tool | Version | Purpose | Packages |\n|------|---------|---------|----------|\n| **Nix** | Multi-user daemon | Declarative package manager | System foundation |\n| **Home Manager** | 24.11 | User environment management | 63 CLI tools |\n| **Homebrew** | Latest | GUI apps \u0026 system tools | Complementary to Nix |\n| **Chezmoi** | Latest | Dotfile management | Config sync |\n\n### Nix Management\n\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `reload-nix` | `nix run home-manager/release-24.11 -- switch --flake ~/nix-config` | Apply Nix configuration changes |\n| `edit-nix` | `$EDITOR ~/nix-config/home.nix` | Edit Nix configuration file |\n\n## CLI Tools 💻\n\n\u003e **Note**: All Nix-managed tools have their versions pinned via `flake.lock` (nixpkgs 24.11 channel). Specific version numbers are listed where explicitly configured in `home.nix`; otherwise versions follow the nixpkgs pin.\n\n### Programming Languages \u0026 Runtimes\n\n| Tool | Version | Managed By | Notes |\n|------|---------|------------|-------|\n| [Node.js](https://nodejs.org/) | 24.x | Nix | JavaScript runtime |\n| [Python](https://www.python.org/) | 3.13.x | Nix | Python interpreter |\n| [PHP](https://www.php.net/) | 8.4.x | Nix | With pcov, redis extensions |\n| [Go](https://golang.org/) | - | Nix | Golang compiler |\n| [Rust](https://www.rust-lang.org/) | - | Nix | Rust toolchain (rustc, cargo, clippy, rustfmt) |\n| [Rust Analyzer](https://rust-analyzer.github.io/) | - | Nix | Rust LSP server |\n| [Bun](https://bun.sh/) | - | Nix | Fast JavaScript runtime |\n| [Deno](https://deno.land/) | - | Nix | Secure TypeScript runtime |\n| [pnpm](https://pnpm.io/) | - | Nix | Fast package manager |\n| [Symfony CLI](https://symfony.com/download) | - | Nix | Symfony tooling |\n| [Composer](https://getcomposer.org/) | Latest | Homebrew | PHP dependency manager |\n\n### Kubernetes \u0026 Container Tools\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [kubectl](https://kubernetes.io/) | - | Nix | Kubernetes CLI |\n| [Helm](https://helm.sh/) | - | Nix | Kubernetes package manager |\n| [Minikube](https://minikube.sigs.k8s.io/) | - | Nix | Local Kubernetes |\n| [ArgoCD](https://argoproj.github.io/cd/) | - | Nix | GitOps CD tool |\n| [k9s](https://k9scli.io/) | - | Nix | Kubernetes TUI |\n| [kubectx](https://github.com/ahmetb/kubectx) | - | Nix | Context switcher |\n| [stern](https://github.com/stern/stern) | - | Nix | Multi-pod logs |\n| [kustomize](https://kustomize.io/) | - | Nix | Kubernetes config |\n| [kubecolor](https://github.com/hidetatz/kubecolor) | - | Nix | Colorized kubectl |\n| [dive](https://github.com/wagoodman/dive) | - | Nix | Docker image explorer |\n| [popeye](https://popeyecli.io/) | - | Nix | Kubernetes scanner |\n| [Lazykube](https://github.com/TNK-Studio/lazykube) | Latest | Homebrew | Kubernetes TUI |\n\n### Development Tools\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [Git](https://git-scm.com/) | - | Nix | Version control |\n| [GitHub CLI](https://cli.github.com/) | - | Nix | GitHub integration |\n| [Lazygit](https://github.com/jesseduffield/lazygit) | - | Nix | Git TUI |\n| [Lazydocker](https://github.com/jesseduffield/lazydocker) | - | Nix | Docker TUI |\n| [Lazysql](https://github.com/jorgerojas26/lazysql) | - | Nix | SQL TUI client |\n| [Redis](https://redis.io/) | - | Nix | In-memory database |\n| [Pandoc](https://pandoc.org/) | - | Nix | Document converter |\n| [Neovim](https://neovim.io/) | - | Nix | Secondary editor (LazyVim) |\n| [Sesh](https://github.com/joshmedeski/sesh) | - | Nix | Tmux session manager |\n| [PlantUML](https://plantuml.com/) | - | Nix | Diagram generation |\n| [D2](https://d2lang.com/) | - | Nix | Modern diagram scripting |\n| [Gnuplot](http://www.gnuplot.info/) | - | Nix | Graph generation |\n| [Just](https://github.com/casey/just) | - | Nix | Task runner |\n| [Tokei](https://github.com/XAMPPRocky/tokei) | - | Nix | Code statistics |\n| [Hyperfine](https://github.com/sharkdp/hyperfine) | - | Nix | Benchmarking |\n| [Chezmoi](https://www.chezmoi.io/) | - | Nix | Dotfiles management |\n| [Direnv](https://direnv.net/) | - | Nix | Directory-level environments |\n\n### Shell \u0026 Terminal\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [Zsh](https://www.zsh.org/) | - | Nix | Interactive shell |\n| [Oh My Zsh](https://ohmyz.sh/) | Latest | Manual (install.sh) | Zsh framework |\n| [Powerlevel10k](https://github.com/romkatv/powerlevel10k) | Latest | Manual (install.sh) | Zsh theme |\n| [Bat](https://github.com/sharkdp/bat) | - | Nix | Enhanced cat (Claude Dark theme) |\n| [Eza](https://eza.rocks/) | - | Nix | Modern ls |\n| [Yazi](https://github.com/sxyazi/yazi) | - | Nix | File manager |\n| [Superfile](https://github.com/yorukot/superfile) | Latest | Homebrew | File manager TUI |\n| [Tmux](https://github.com/tmux/tmux) | - | Nix | Terminal multiplexer |\n| [Fzf](https://github.com/junegunn/fzf) | - | Nix | Fuzzy finder (Claude Dark theme) |\n| [Zoxide](https://github.com/ajeetdsouza/zoxide) | - | Nix | Smarter cd (`z` command) |\n| [Neofetch](https://github.com/dylanaraps/neofetch) | - | Nix | System info |\n\n### System \u0026 Network Tools\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [coreutils](https://www.gnu.org/software/coreutils/) | - | Nix | GNU core utilities |\n| [findutils](https://www.gnu.org/software/findutils/) | - | Nix | GNU find utilities |\n| [gnused](https://www.gnu.org/software/sed/) | - | Nix | GNU sed |\n| [gnugrep](https://www.gnu.org/software/grep/) | - | Nix | GNU grep |\n| [Tree](https://mama.indstate.edu/users/ice/tree/) | - | Nix | Directory listing |\n| [fd](https://github.com/sharkdp/fd) | - | Nix | Find alternative |\n| [ripgrep](https://github.com/BurntSushi/ripgrep) | - | Nix | Grep alternative |\n| [htop](https://htop.dev/) | - | Nix | Process viewer |\n| [duf](https://github.com/muesli/duf) | - | Nix | Disk usage |\n| [bottom](https://github.com/ClementTsang/bottom) | - | Nix | System monitor |\n| [jq](https://jqlang.github.io/jq/) | - | Nix | JSON processor |\n| [yq](https://github.com/mikefarah/yq) | - | Nix | YAML processor |\n| [curl](https://curl.se/) | - | Nix | URL transfer |\n| [wget](https://www.gnu.org/software/wget/) | - | Nix | Web downloader |\n| [HTTPie](https://httpie.io/) | - | Nix | HTTP client |\n| [dogdns](https://github.com/ogham/dog) | - | Nix | DNS client |\n\n### Multimedia \u0026 Music\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [ffmpeg](https://ffmpeg.org/) | - | Nix | Video/audio processing |\n| [ImageMagick](https://imagemagick.org/) | - | Nix | Image processing |\n| [Poppler](https://poppler.freedesktop.org/) | - | Nix | PDF tools |\n| [rmpc](https://github.com/mierak/rmpc) | - | Nix | MPD client TUI |\n| [mpc](https://www.musicpd.org/clients/mpc/) | - | Nix | MPD CLI client |\n\n### Cloud \u0026 API Tools\n\n| Tool | Version | Managed By | Purpose |\n|------|---------|------------|---------|\n| [AWS CLI](https://aws.amazon.com/cli/) | v2 | Nix | Amazon Web Services |\n| [Stripe CLI](https://stripe.com/docs/stripe-cli) | - | Nix | Stripe API testing |\n\n## GUI Applications 🖥️\n\n### Development\n\n| Application | Purpose | Managed By | Cask |\n|-------------|---------|------------|------|\n| [Zed](https://zed.dev/) | Modern code editor | Homebrew | `zed@preview` |\n| [Ghostty](https://ghostty.org/) | GPU-accelerated terminal | Homebrew | `ghostty` |\n| [Warp](https://warp.dev/) | Rust-based terminal | Homebrew | `warp` |\n| [OrbStack](https://orbstack.dev/) | Docker alternative | Homebrew | `orbstack` |\n| [Postman](https://www.postman.com/) | API platform | Homebrew | `postman` |\n| [TablePlus](https://tableplus.com/) | Database management | SetApp | - |\n\n### Browsers \u0026 Communication\n\n| Application | Purpose | Managed By | Cask |\n|-------------|---------|------------|------|\n| [Arc](https://arc.net/) | Modern browser | Homebrew | `arc` |\n| [Slack](https://slack.com/) | Team communication | Homebrew | `slack` |\n| [Discord](https://discord.com/) | Community platform | Homebrew | `discord` |\n| [WhatsApp](https://www.whatsapp.com/) | Messaging | Homebrew | `whatsapp` |\n| [Telegram](https://telegram.org/) | Messaging | Homebrew | `telegram` |\n| [Mattermost](https://mattermost.com/) | Team collaboration | Homebrew | `mattermost` |\n\n### Productivity\n\n| Application | Purpose | Managed By | Cask |\n|-------------|---------|------------|------|\n| [Raycast](https://raycast.com/) | Launcher \u0026 productivity | Homebrew | `raycast` |\n| [Obsidian](https://obsidian.md/) | Knowledge base | Homebrew | `obsidian` |\n| [Claude](https://claude.ai/) | AI assistant | Homebrew | `claude` |\n| [Dashlane](https://www.dashlane.com/) | Password manager | App Store | - |\n| [Figma](https://www.figma.com/) | Design tool | Homebrew | `figma` |\n| [Anki](https://apps.ankiweb.net/) | Spaced repetition | Homebrew | `anki` |\n| [CleanShot X](https://cleanshot.com/) | Screenshot tool | SetApp | - |\n| [PixelSnap](https://getpixelsnap.com/) | Measurement tool | SetApp | - |\n| [Sip](https://sipapp.io/) | Color picker | SetApp | - |\n| [Yoink](https://eternalstorms.at/yoink/mac/) | Drag \u0026 drop helper | SetApp | - |\n\n### System Tools\n\n| Application | Purpose | Managed By | Cask |\n|-------------|---------|------------|------|\n| [AeroSpace](https://github.com/nikitabobko/AeroSpace) | Window manager | Homebrew | `nikitabobko/tap/aerospace` |\n| [Sketchybar](https://github.com/FelixKratz/SketchyBar) | Menu bar | Homebrew | `felixkratz/formulae/sketchybar` |\n| [Borders](https://github.com/FelixKratz/JankyBorders) | Window borders | Homebrew | `felixkratz/formulae/borders` |\n| [SF Symbols](https://developer.apple.com/sf-symbols/) | System icons | Homebrew | `sf-symbols` |\n| [Logi Options+](https://www.logitech.com/en-us/software/logi-options-plus.html) | Logitech device manager | Homebrew | `logi-options+` |\n| [Rectangle](https://rectangleapp.com/) | Window management | Homebrew | `rectangle` |\n| [CleanMyMac X](https://macpaw.com/cleanmymac) | System cleaner | SetApp | - |\n| [NotchNook](https://lo.cafe/notchnook) | Notch utility | SetApp | - |\n| [Canary Mail](https://canarymail.io/) | Email client | SetApp | - |\n| [Clop](https://setapp.com/apps/clop) | Media optimizer | SetApp | - |\n\n### Gaming \u0026 Entertainment\n\n| Application | Purpose | Managed By | Cask |\n|-------------|---------|------------|------|\n| [Steam](https://store.steampowered.com/) | Gaming platform | Homebrew | `steam` |\n\n## Aliases \u0026 Functions 🔧\n\n### System Aliases\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `x` | `exit` | Exit terminal |\n| `config` | `cd $XDG_CONFIG_HOME` | Navigate to config directory |\n| `edit-config` | `$EDITOR $XDG_CONFIG_HOME` | Edit config directory |\n| `reload-zsh` | `source ~/.zshrc` | Reload ZSH configuration |\n| `edit-zsh` | `$EDITOR ~/.zshrc` | Edit ZSH configuration |\n| `edit-p10k` | `$EDITOR ~/.p10k.zsh` | Edit Powerlevel10k configuration |\n\n### Development Aliases\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `py`, `python` | `/usr/bin/python3` | Python 3 |\n| `pa`, `laravel` | `php artisan` | PHP Artisan CLI |\n| `a`, `adonis` | `node ace` | Adonis Ace CLI |\n| `ls` | `eza --color=always --long --git --no-filesize --icons=always --no-time --no-user --no-permissions --group-directories-first` | Enhanced listing |\n| `z` | `zoxide` | Smart directory navigation (replaces `cd` for frequent dirs) |\n| `lg` | `lazygit` | Terminal UI for Git |\n| `lzd` | `lazydocker` | Terminal UI for Docker |\n| `f` | `fzf --tmux top,50%` | Fuzzy finder in Tmux fixed on top with 50% height |\n| `ad` | `agent-deck` | Launch Agent Deck (bypasses nested tmux detection) |\n\n### GitHub Copilot Aliases\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `gcs` | `gh copilot suggest` | Get command suggestions |\n| `gce` | `gh copilot explain` | Explain commands |\n| `gcc` | `gh copilot config` | Configure Copilot |\n| `gca` | `gh copilot alias` | Manage Copilot aliases |\n\n### Web Search Aliases\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `gg` | `google` | Google search from terminal |\n| `yt` | `youtube` | YouTube search from terminal |\n\n### Window Manager Services\n\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `reload-sketchybar` | `brew services restart sketchybar` | Restart Sketchybar menu bar |\n| `edit-sketchybar` | `$EDITOR $XDG_CONFIG_HOME/sketchybar` | Edit Sketchybar configuration |\n| `reload-borders` | `brew services restart borders` | Restart window borders |\n| `edit-borders` | `$EDITOR $XDG_CONFIG_HOME/borders` | Edit borders configuration |\n\n### Tmux\n\n| Alias | Command | Description |\n|-------|---------|-------------|\n| `t` | `tmux -2` | Launch Tmux with 256 colors |\n| `reload-tmux` | `tmux source-file ~/.tmux.conf` | Reload Tmux configuration |\n| `edit-tmux` | `$EDITOR ~/.tmux.conf` | Edit Tmux configuration |\n\n### Custom Functions\n\n| Function | Usage | Description |\n|----------|-------|-------------|\n| `y()` | `y [path]` | Launch Yazi file manager with directory change on exit |\n| `brew()` | `brew [args]` | Homebrew wrapper that triggers Sketchybar updates |\n| `zen()` | `zen [mode]` | Toggle Sketchybar zen mode |\n\n## Window Manager (AeroSpace) 🪟\n\n\u003e Modern tiling window manager (no SIP required) - See [MIGRATION-YABAI-TO-AEROSPACE.md](./MIGRATION-YABAI-TO-AEROSPACE.md)\n\n\u003e [!NOTE]\n\u003e **Dual input mode** pour clavier AZERTY - le left Option reste libre pour les caracteres speciaux (`{ } [ ] @ # | \\`).\n\u003e\n\u003e | Mode | Methode | Usage |\n\u003e |------|---------|-------|\n\u003e | **Leader key** | \u003ckbd\u003e⌥→\u003c/kbd\u003e (F18 via Karabiner) puis touche | Clavier interne (portable) |\n\u003e | **Held modifier** | \u003ckbd\u003e⌥→\u003c/kbd\u003e maintenu (Ctrl+Alt via Karabiner) puis touche | Clavier externe (desktop) |\n\u003e\n\u003e Sketchybar affiche un indicateur visuel du mode actif (aero/resize/service).\n\n### Workspace Navigation\n\n| Leader key | Held modifier | Workspace | Applications |\n|------------|---------------|-----------|-------------|\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e1\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e1\u003c/kbd\u003e | 1 - Home | Mail, Calendar, Canary Mail |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e2\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e2\u003c/kbd\u003e | 2 - Music | Apple Music, Spotify, Tidal |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e3\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e3\u003c/kbd\u003e | 3 - Development | Zed, Ghostty, VS Code, JetBrains, Postman |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eQ\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eQ\u003c/kbd\u003e | 4 - Web | Helium, Dia/Arc, Chrome, Safari |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eW\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eW\u003c/kbd\u003e | 5 - Communication | Slack, Discord, Messages, Teams, Zoom |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eE\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eE\u003c/kbd\u003e | 6 - Server Tools | TablePlus, OrbStack, Docker |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eO\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eO\u003c/kbd\u003e | 7 - Notes | Obsidian |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eC\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e | 8 - Claude AI | Claude |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eTab\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eTab\u003c/kbd\u003e | Back and forth | Previous workspace |\n\n### Window Focus\n\n| Leader key | Held modifier | Action |\n|------------|---------------|--------|\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | Focus window (vim-style) |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e←\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e/\u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e→\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e←\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e/\u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e→\u003c/kbd\u003e | Focus window (arrows) |\n\n### Window Movement\n\n| Leader key | Held modifier | Action |\n|------------|---------------|--------|\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | Move window (vim-style) |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e1\u003c/kbd\u003e-\u003ckbd\u003e3\u003c/kbd\u003e/\u003ckbd\u003eQ\u003c/kbd\u003e/\u003ckbd\u003eW\u003c/kbd\u003e/\u003ckbd\u003eE\u003c/kbd\u003e/\u003ckbd\u003eO\u003c/kbd\u003e/\u003ckbd\u003eC\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003ekey\u003c/kbd\u003e | Move to workspace |\n\n### Layout \u0026 Display\n\n| Leader key | Held modifier | Action |\n|------------|---------------|--------|\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e/\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e/\u003c/kbd\u003e | Toggle tiles layout |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e,\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e,\u003c/kbd\u003e | Toggle accordion layout |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eSpace\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eSpace\u003c/kbd\u003e | Toggle floating/tiling |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eF\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eF\u003c/kbd\u003e | Toggle fullscreen |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e-\u003c/kbd\u003e/\u003ckbd\u003e=\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e-\u003c/kbd\u003e/\u003ckbd\u003e=\u003c/kbd\u003e | Resize window (smart) |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eR\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e | Enter resize mode |\n\n### Resize Mode\n\n\u003e Enter with \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eR\u003c/kbd\u003e. Exit with \u003ckbd\u003eEsc\u003c/kbd\u003e or \u003ckbd\u003eEnter\u003c/kbd\u003e. Stays in resize mode until exit.\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eh\u003c/kbd\u003e | `resize width +50` | Grow width (left) |\n| \u003ckbd\u003ej\u003c/kbd\u003e | `resize height -50` | Shrink height (down) |\n| \u003ckbd\u003ek\u003c/kbd\u003e | `resize height +50` | Grow height (up) |\n| \u003ckbd\u003el\u003c/kbd\u003e | `resize width -50` | Shrink width (right) |\n| \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eh\u003c/kbd\u003e | `resize width -50` | Shrink width (opposite) |\n| \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003ej\u003c/kbd\u003e | `resize height +50` | Grow height (opposite) |\n| \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003ek\u003c/kbd\u003e | `resize height -50` | Shrink height (opposite) |\n| \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003el\u003c/kbd\u003e | `resize width +50` | Grow width (opposite) |\n| \u003ckbd\u003e-\u003c/kbd\u003e/\u003ckbd\u003e=\u003c/kbd\u003e | Smart resize ±50 | Resize smart |\n| \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e-\u003c/kbd\u003e/\u003ckbd\u003e=\u003c/kbd\u003e | Smart resize ±10 | Fine smart resize |\n\n### Utilities\n\n| Leader key | Held modifier | Action |\n|------------|---------------|--------|\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003eEnter\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e | Open Ghostty terminal |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eX\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eX\u003c/kbd\u003e | Close window |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e=\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e=\u003c/kbd\u003e | Balance window sizes |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003eR\u003c/kbd\u003e | Reload config |\n| \u003ckbd\u003e⌥→\u003c/kbd\u003e \u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e;\u003c/kbd\u003e | \u003ckbd\u003e⌥→\u003c/kbd\u003e+\u003ckbd\u003e⇧\u003c/kbd\u003e+\u003ckbd\u003e;\u003c/kbd\u003e | Enter service mode |\n| \u003ckbd\u003eEsc\u003c/kbd\u003e | \u003ckbd\u003eEsc\u003c/kbd\u003e | Exit current mode |\n\n### SketchyVim (svim)\n\n\u003e Ajoute les modes vim (Normal/Insert/Visual) a tous les champs texte macOS via l'API Accessibility.\n\u003e Indicateur de mode visible dans Sketchybar.\n\n| Config | Description |\n|--------|-------------|\n| `~/.config/svim/svimrc` | Remaps vim (Y, H, L) |\n| `~/.config/svim/blacklist` | Apps exclues (Ghostty, Zed, terminals) |\n| `~/.config/svim/svim.sh` | Hook sketchybar pour indicateur de mode |\n\n## Shortcuts \u0026 Keybindings ⌨️\n\n### Tmux Keybindings 🖥️\n\n\u003e **Prefix**: \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eA\u003c/kbd\u003e (replaces default \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eB\u003c/kbd\u003e)\n\u003e **Theme**: Claude Dark with copper accent (`#D4825D`)\n\u003e **Config source**: `home.nix` (Nix Home Manager)\n\n#### Session Management\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e | `source-file ~/.tmux.conf` | Reload configuration |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eT\u003c/kbd\u003e | Sesh picker | Open session manager (fzf-based, with multi-source: tmux, configs, zoxide, find) |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eL\u003c/kbd\u003e | Sesh last | Switch to last session |\n\n#### Window Management\n\n| Shortcut | Action |\n|----------|--------|\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e | Create new window (in current path) |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eB\u003c/kbd\u003e | Previous window |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eN\u003c/kbd\u003e | Next window |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eX\u003c/kbd\u003e (uppercase) | Close window |\n\n#### Pane Management\n\n| Shortcut | Action |\n|----------|--------|\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eH\u003c/kbd\u003e | Focus left pane |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eJ\u003c/kbd\u003e | Focus down pane |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eK\u003c/kbd\u003e | Focus up pane |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eL\u003c/kbd\u003e | Focus right pane |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003ex\u003c/kbd\u003e (lowercase) | Close pane |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eV\u003c/kbd\u003e | Split horizontally (in current path) |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | Split vertically (in current path) |\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003eH/J/K/L\u003c/kbd\u003e | Resize pane (repeatable, ±5) |\n\n#### Navigation (no prefix)\n\n| Shortcut | Action |\n|----------|--------|\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | Seamless navigation between tmux panes and nvim splits (tmux.nvim) |\n\n#### Copy Mode\n\n| Shortcut | Action |\n|----------|--------|\n| \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eV\u003c/kbd\u003e | Enter copy mode |\n| \u003ckbd\u003eEscape\u003c/kbd\u003e | Cancel copy mode |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e | Copy selection and exit |\n\n#### Plugins\n\n| Plugin | Trigger | Purpose |\n|--------|---------|---------|\n| [sesh](https://github.com/joshmedeski/sesh) | \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eT\u003c/kbd\u003e | Smart session manager with fzf |\n| [tmux.nvim](https://github.com/aserowy/tmux.nvim) | \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eh/j/k/l\u003c/kbd\u003e | Seamless nvim/tmux navigation |\n| [fzf-url](https://github.com/wfxr/tmux-fzf-url) | \u003ckbd\u003eprefix\u003c/kbd\u003e + \u003ckbd\u003eU\u003c/kbd\u003e | URL picker with fzf |\n| [tmux-yank](https://github.com/tmux-plugins/tmux-yank) | - | System clipboard integration |\n| claude-dark | - | Custom Claude Dark theme (copper accent `#D4825D`) |\n| tmux-cpu | - | CPU usage in status bar |\n| tmux-battery | - | Battery status (laptops) |\n\n## Neovim Configuration 📝\n\nSecondary editor using [LazyVim](https://www.lazyvim.org/) with custom plugins and Claude Dark colorscheme.\n\n### Key Features\n\n| Feature | Plugin/Config | Description |\n|---------|--------------|-------------|\n| **Colorscheme** | `claude-dark` (custom) | Warm copper theme matching terminal setup |\n| **AI Integration** | `claude-code.nvim` | Claude Code integration in editor |\n| **Git Worktrees** | `git-worktree.nvim` | Manage git worktrees with telescope |\n| **File Manager** | `neo-tree.nvim` | File tree with icons |\n| **Docker** | `lazydocker.nvim` | Docker TUI integration |\n| **Task Runner** | `overseer.nvim` | Run Zed-compatible tasks from nvim |\n| **Tmux** | `tmux.nvim` | Seamless nvim/tmux pane navigation |\n| **PHP** | Laravel/PHP extras | PHP development support |\n| **Rust** | `rust-analyzer` + extras | Rust development support |\n| **Markdown** | `render-markdown.nvim` | Rendered markdown preview |\n| **Multi-cursor** | `vim-visual-multi` | Multiple cursor editing |\n| **Autosave** | `auto-save.nvim` | Automatic file saving |\n\n### Plugin Structure\n\n```\n~/.config/nvim/lua/\n├── config/           # Core config (keymaps, options, autocmds, lazy)\n├── plugins/          # Plugin specs (one file per plugin/group)\n├── claude-dark/      # Custom colorscheme\n└── overseer/         # Task templates (Zed tasks compat)\n```\n\n## Zed Configuration ⚡\n\nPrimary editor with custom Vim-mode keybindings, task integrations, and Claude Dark theme.\n\n### Keybindings 🎹\n\n#### Global Navigation\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | `workspace::ActivatePane*` | Focus pane (left/down/up/right) |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | `pane::SplitAndMove*` | Split pane and move (left/down/up/right) |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e@\u003c/kbd\u003e | `editor::RestartLanguageServer` | Restart language server |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eù\u003c/kbd\u003e | `git_panel::ToggleFocus` | Toggle Git panel |\n\n#### Editor\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e | `editor::ShowCompletions` | Show completions |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | `editor::Format` | Format current file |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e | `editor::MoveLineUp/Down` | Move line up/down |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e | `editor::MoveLineUp/Down` | Move line up/down (arrows) |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e | `editor::Rename` | Rename symbol |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e | `editor::DeleteLine` | Delete current line |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | `editor::SelectLargerSyntaxNode` | Select larger syntax node |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | `editor::SelectSmallerSyntaxNode` | Select smaller syntax node |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e\u003c\u003c/kbd\u003e | `editor::ToggleInlayHints` | Toggle inlay hints |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e;\u003c/kbd\u003e | `go_to_line::Toggle` | Go to line |\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e | `assistant::InlineAssist` | Inline AI assist |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e | `markdown::OpenPreview` | Open markdown preview |\n\n#### Alt Shortcuts (Workspace + Terminal)\n\n\u003e These shortcuts work globally and in terminal context for quick access to tools.\n\n| Shortcut | Task | Description |\n|----------|------|-------------|\n| \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e | `task::Spawn` | Open task launcher |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e | Claude Code (skip perms) | Open Claude Code |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | Files: FZF | FZF file finder |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ey\u003c/kbd\u003e | Files: Yazi | Yazi file manager |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e | Files: Rename Files (FZF) | Batch rename files |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | Git: Lazygit | Open Lazygit |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e | Database: Redis CLI | Open Redis CLI |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | LazySQL | SQL TUI client |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e | LazyCurl | HTTP client TUI |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | LazySSH | SSH manager TUI |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | Docker: Lazydocker | Docker TUI |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e | Kubernetes: Lazykube | Kubernetes TUI |\n| \u003ckbd\u003e⌥\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e | Files: Generate Project Structure | Generate project tree |\n\n#### Terminal\n\n\u003e **No direct `ctrl-*` bindings** in Terminal context — all navigation uses the `ctrl-a` prefix (tmux-like) to avoid conflicts with Claude Code, lazygit, and other TUI apps.\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eEsc\u003c/kbd\u003e | `terminal::ToggleViMode` | Toggle Vi mode |\n\n### Ctrl-A Prefix (tmux-like) 🖥️\n\n\u003e **Available in both Editor (vim mode) and Terminal.** Mirrors tmux prefix workflow — `ctrl-a` replaces `vim::Increment` in editor.\n\n#### Pane Navigation \u0026 Management\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | `workspace::ActivatePane*` | Focus pane (left/down/up/right) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eH\u003c/kbd\u003e/\u003ckbd\u003eJ\u003c/kbd\u003e/\u003ckbd\u003eK\u003c/kbd\u003e/\u003ckbd\u003eL\u003c/kbd\u003e | `workspace::SwapPane*` | Swap pane (left/down/up/right) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ez\u003c/kbd\u003e | `workspace::ToggleZoom` | Toggle pane zoom |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003e=\u003c/kbd\u003e | `workspace::IncreaseActiveDockSize` | Grow dock (matches aerospace) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003e-\u003c/kbd\u003e | `workspace::DecreaseActiveDockSize` | Shrink dock (matches aerospace) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003e+\u003c/kbd\u003e | `workspace::ResetActiveDockSize` | Reset dock size |\n\n#### Tab / Buffer\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003en\u003c/kbd\u003e | `pane::ActivateNextItem` | Next tab |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eb\u003c/kbd\u003e | `pane::ActivatePreviousItem` | Previous tab |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ex\u003c/kbd\u003e | `pane::CloseActiveItem` | Close tab |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ev\u003c/kbd\u003e | `pane::SplitRight` | Split right |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003es\u003c/kbd\u003e | `pane::SplitDown` | Split down |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eTab\u003c/kbd\u003e | `pane::ActivateNextItem` | Next tab (alt) |\n\n#### Ctrl-A Sub-menus\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ee\u003c/kbd\u003e | `project_panel::ToggleFocus` | Toggle explorer |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eSpace\u003c/kbd\u003e | `file_finder::Toggle` | File finder |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ef\u003c/kbd\u003e \u003ckbd\u003ef\u003c/kbd\u003e/\u003ckbd\u003eg\u003c/kbd\u003e/\u003ckbd\u003ep\u003c/kbd\u003e/\u003ckbd\u003es\u003c/kbd\u003e/\u003ckbd\u003et\u003c/kbd\u003e | Find | File/Grep/Project/Symbols/Terminal |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ea\u003c/kbd\u003e \u003ckbd\u003ec\u003c/kbd\u003e | Claude Code | New session (skip perms) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ea\u003c/kbd\u003e \u003ckbd\u003eC\u003c/kbd\u003e | Claude Code (Continue) | Continue session (skip perms) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003ea\u003c/kbd\u003e \u003ckbd\u003ei\u003c/kbd\u003e/\u003ckbd\u003ef\u003c/kbd\u003e/\u003ckbd\u003ep\u003c/kbd\u003e | AI | Inline assist / Agent focus / Add to thread |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eg\u003c/kbd\u003e \u003ckbd\u003eg\u003c/kbd\u003e | `git_panel::ToggleFocus` | Git panel |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003eG\u003c/kbd\u003e \u003ckbd\u003eG\u003c/kbd\u003e | Git: Lazygit | Open Lazygit |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003et\u003c/kbd\u003e \u003ckbd\u003e*\u003c/kbd\u003e | Tools | All TUI tools (same as `space t *`) |\n| \u003ckbd\u003e⌃a\u003c/kbd\u003e \u003ckbd\u003e,\u003c/kbd\u003e \u003ckbd\u003e*\u003c/kbd\u003e | Settings | Keymap/Settings/Tasks/Theme/Extensions |\n\n### Vim-Mode Keybindings 🧙‍♂️\n\n#### Quick Navigation (Ctrl) — Editor only\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e | `pane::ActivateNextItem` | Next tab/buffer |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e | `pane::ActivatePreviousItem` | Previous tab/buffer |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003ex\u003c/kbd\u003e | `pane::CloseActiveItem` | Close active tab/buffer |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e | `pane::SplitRight` | Split pane right |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | `pane::SplitDown` | Split pane down |\n\n#### Folding (z)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e | `editor::ToggleFold` | Toggle fold at cursor |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e | `editor::Fold` | Fold at cursor |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003eH\u003c/kbd\u003e | `editor::FoldAll` | Fold all regions |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e | `editor::UnfoldLines` | Unfold at cursor |\n| \u003ckbd\u003ez\u003c/kbd\u003e + \u003ckbd\u003eL\u003c/kbd\u003e | `editor::UnfoldAll` | Unfold all regions |\n\n#### Space Leader - Explorer \u0026 Search (space f)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e | `project_panel::ToggleFocus` | Toggle project panel |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eSpace\u003c/kbd\u003e | `file_finder::Toggle` | File finder |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | `file_finder::Toggle` | File finder |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | `pane::DeploySearch` | Global search |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e | `projects::OpenRecent` | Open recent project |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e | `vim::Search` | Search in buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | `outline::Toggle` | Toggle outline view |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e | `search::ToggleReplace` | Search \u0026 replace |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e | `go_to_line::Toggle` | Go to line |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e | `terminal_panel::ToggleFocus` | Toggle terminal |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eT\u003c/kbd\u003e | `workspace::NewCenterTerminal` | New center terminal |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e;\u003c/kbd\u003e | `go_to_line::Toggle` | Go to line |\n\n#### Space Leader - Buffer (space b)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e | `pane::ActivateNextItem` | Next buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e | `pane::ActivatePreviousItem` | Previous buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `pane::CloseActiveItem` | Close buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003eo\u003c/kbd\u003e | `pane::CloseOtherItems` | Close other buffers |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | `editor::Format` | Format buffer |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e | `editor::DiffClipboardWithSelection` | Diff clipboard |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eTab\u003c/kbd\u003e | `pane::ActivateNextItem` | Next tab |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003eTab\u003c/kbd\u003e | `pane::ActivatePreviousItem` | Previous tab |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e | `pane::SplitRight` | Split right |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | `pane::SplitDown` | Split down |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ex\u003c/kbd\u003e | `pane::CloseActiveItem` | Close item |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e | `markdown::OpenPreview` | Markdown preview |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eM\u003c/kbd\u003e | `markdown::OpenPreviewToTheSide` | Markdown preview (side) |\n\n#### Space Leader - Window / Split (space w)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e | `pane::SplitRight` | Split right |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | `pane::SplitDown` | Split down |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `pane::CloseActiveItem` | Close pane |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003ej\u003c/kbd\u003e/\u003ckbd\u003ek\u003c/kbd\u003e/\u003ckbd\u003el\u003c/kbd\u003e | `workspace::ActivatePane*` | Focus pane |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003eH\u003c/kbd\u003e/\u003ckbd\u003eJ\u003c/kbd\u003e/\u003ckbd\u003eK\u003c/kbd\u003e/\u003ckbd\u003eL\u003c/kbd\u003e | `workspace::SwapPane*` | Swap/move pane |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e/\u003ckbd\u003eb\u003c/kbd\u003e | `workspace::ActivateNextPane/PreviousPane` | Next/previous pane |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003ez\u003c/kbd\u003e | `workspace::ToggleZoom` | Toggle pane zoom |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003e=\u003c/kbd\u003e/\u003ckbd\u003e-\u003c/kbd\u003e | Increase/Decrease dock size | Resize dock (matches aerospace) |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e + \u003ckbd\u003e+\u003c/kbd\u003e | Reset dock size | Reset to default |\n\n#### Space Leader - Code / LSP (space c)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e | `editor::Rename` | Rename symbol |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e | `editor::ToggleCodeActions` | Code actions |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `editor::GoToDefinition` | Go to definition |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e | `editor::GoToTypeDefinition` | Go to type definition |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e | `editor::GoToImplementation` | Go to implementation |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eR\u003c/kbd\u003e | `editor::Rename` | Rename symbol |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eo\u003c/kbd\u003e | `editor::Hover` | Show hover info |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e.\u003c/kbd\u003e | `editor::ToggleCodeActions` | Code actions |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eA\u003c/kbd\u003e | `editor::FindAllReferences` | Find all references |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e@\u003c/kbd\u003e | `editor::RestartLanguageServer` | Restart LSP |\n\n#### Space Leader - Git (space g)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | `git_panel::ToggleFocus` | Toggle Git panel |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eG\u003c/kbd\u003e + \u003ckbd\u003eG\u003c/kbd\u003e | `task::Spawn \"Git: Lazygit\"` | Open Lazygit |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003eb\u003c/kbd\u003e | `git::Blame` | Git blame |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e | `task::Spawn \"Git: Lumen diff\"` | Lumen diff |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `git::Diff` | Git diff |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e | `git_panel::ToggleTreeView` | Toggle tree view |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ew\u003c/kbd\u003e | `git::Worktree` | Git worktree |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e | `editor::ToggleSplitDiff` | Toggle split diff |\n\n#### Space Leader - Tools / Tasks (space t)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e | `task::Spawn` | Open task launcher |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003eT\u003c/kbd\u003e | `terminal::RerunTask` | Rerun last task |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003en\u003c/kbd\u003e | IDE: Neovim | Open Neovim |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | Files: FZF | FZF file finder |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ey\u003c/kbd\u003e | Files: Yazi | Yazi file manager |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003er\u003c/kbd\u003e | Files: Rename Files (FZF) | Batch rename |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | Docker: Lazydocker | Docker TUI |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e | Kubernetes: Lazykube | Kubernetes TUI |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e | Files: Generate Project Structure | Project tree |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003el\u003c/kbd\u003e | Git: Generate Git Logs file | Git logs (limited) |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003eL\u003c/kbd\u003e | Git: Generate Git Logs file (All) | Git logs (all) |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | LazySQL | SQL TUI |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | LazySSH | SSH manager |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e | LazyCurl | HTTP client |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e | Ekphos | Documentation generator |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e + \u003ckbd\u003em\u003c/kbd\u003e | Lazymake | Build system |\n\n#### Space Leader - AI (space a)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e | `assistant::InlineAssist` | Inline AI assist |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e | `assistant::InlineAssist` | Inline AI assist |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003ef\u003c/kbd\u003e | `agent::ToggleFocus` | Toggle AI agent panel |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003ep\u003c/kbd\u003e | `agent::AddSelectionToThread` | Add selection to thread |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e | Claude Code (skip perms) | New Claude Code session |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ea\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e | Claude Code (continue + skip perms) | Continue previous session |\n\n\u003e All Claude Code shortcuts use `--dangerously-skip-permissions` by default. Other variants (Chrome, Resume) are available via \u003ckbd\u003e⌘\u003c/kbd\u003e + \u003ckbd\u003e⇧\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e task launcher.\n\n#### Space Leader - Symbols \u0026 Diagnostics\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | `project_symbols::Toggle` | Project symbols |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eG\u003c/kbd\u003e | `editor::SelectAllMatches` | Select all matches |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `diagnostics::Deploy` | Deploy diagnostics |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003ed\u003c/kbd\u003e | `editor::GoToDiagnostic` | Next diagnostic |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003eD\u003c/kbd\u003e | `editor::GoToPreviousDiagnostic` | Previous diagnostic |\n\n#### Space Leader - Settings (space ,)\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003ek\u003c/kbd\u003e | `zed::OpenKeymapFile` | Edit keymap file |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003eK\u003c/kbd\u003e | `zed::OpenKeymap` | Open keymap reference |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003es\u003c/kbd\u003e | `zed::OpenSettingsFile` | Edit settings file |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003eS\u003c/kbd\u003e | `zed::OpenSettings` | Open settings reference |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003et\u003c/kbd\u003e | `zed::OpenTasks` | Open tasks |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003ec\u003c/kbd\u003e | `theme_selector::Toggle` | Theme selector |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003eC\u003c/kbd\u003e | `icon_theme_selector::Toggle` | Icon theme selector |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e,\u003c/kbd\u003e + \u003ckbd\u003ee\u003c/kbd\u003e | `zed::Extensions` | Extensions |\n\n#### Space Leader - Navigation\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e0\u003c/kbd\u003e | `vim::StartOfDocument` | Start of document |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e*\u003c/kbd\u003e | `vim::MoveToNext` (partial) | Next word occurrence |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e + \u003ckbd\u003e¨\u003c/kbd\u003e | `vim::MoveToPrevious` (partial) | Previous word occurrence |\n\n### File Explorer (ProjectPanel) 📁\n\n\u003e Vim-style keybindings when the project panel is focused.\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003e/\u003c/kbd\u003e | `file_finder::Toggle` | File finder |\n| \u003ckbd\u003ef\u003c/kbd\u003e + \u003ckbd\u003eg\u003c/kbd\u003e | `workspace::NewSearch` | Global search |\n| \u003ckbd\u003ea\u003c/kbd\u003e | `project_panel::NewFile` | New file |\n| \u003ckbd\u003eA\u003c/kbd\u003e | `project_panel::NewDirectory` | New directory |\n| \u003ckbd\u003ed\u003c/kbd\u003e | `project_panel::Delete` | Delete |\n| \u003ckbd\u003eD\u003c/kbd\u003e | `project_panel::Duplicate` | Duplicate |\n| \u003ckbd\u003eR\u003c/kbd\u003e | `project_panel::Rename` | Rename |\n| \u003ckbd\u003ey\u003c/kbd\u003e / \u003ckbd\u003eY\u003c/kbd\u003e | `Copy` / `Cut` | Copy / Cut |\n| \u003ckbd\u003ep\u003c/kbd\u003e | `project_panel::Paste` | Paste |\n| \u003ckbd\u003ec\u003c/kbd\u003e / \u003ckbd\u003eC\u003c/kbd\u003e | Copy relative/absolute path | Copy file path |\n| \u003ckbd\u003en\u003c/kbd\u003e / \u003ckbd\u003eb\u003c/kbd\u003e | Next/Previous directory | Directory navigation |\n| \u003ckbd\u003eT\u003c/kbd\u003e | `workspace::OpenInTerminal` | Open in terminal |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003ev\u003c/kbd\u003e/\u003ckbd\u003es\u003c/kbd\u003e | Split vertical/horizontal | Open in split |\n\n\u003e All the above also work with `Space` prefix (e.g., `Space a` = new file).\n\n### Git Panel 🔀 (lazygit-style)\n\n\u003e Keybindings mirror [lazygit](https://github.com/jesseduffield/lazygit) for muscle memory consistency.\n\n| Shortcut | Action | Description |\n|----------|--------|-------------|\n| \u003ckbd\u003eSpace\u003c/kbd\u003e | `git::ToggleStaged` | Toggle file staging (lazygit: space) |\n| \u003ckbd\u003ea\u003c/kbd\u003e | `git::StageAll` | Stage all files (lazygit: a) |\n| \u003ckbd\u003eu\u003c/kbd\u003e | `git::UnstageAll` | Unstage all files |\n| \u003ckbd\u003ec\u003c/kbd\u003e | `git::Commit` | Commit (lazygit: c) |\n| \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003ei\u003c/kbd\u003e | `git::GenerateCommitMessage` | AI-generate commit message |\n| \u003ckbd\u003eP\u003c/kbd\u003e / \u003ckbd\u003ep\u003c/kbd\u003e / \u003ckbd\u003ef\u003c/kbd\u003e | Push / Pull / Fetch | Remote operations (lazygit: P/p/f) |\n| \u003ckbd\u003eb\u003c/kbd\u003e / \u003ckbd\u003eB\u003c/kbd\u003e | Branch / Checkout branch | Branch management (lazygit: n/space) |\n| \u003ckbd\u003ew\u003c/kbd\u003e | `git::Worktree` | Git worktree (lazygit: w) |\n| \u003ckbd\u003es\u003c/kbd\u003e | `git::StashAll` | Stash all (lazygit: s) |\n| \u003ckbd\u003eS\u003c/kbd\u003e | `git::ViewStash` | View stash (lazygit: S) |\n| \u003ckbd\u003eA\u003c/kbd\u003e | `git::StashPop` | Pop stash |\n| \u003ckbd\u003ed\u003c/kbd\u003e / \u003ckbd\u003eD\u003c/kbd\u003e | Restore file / Diff | Discard \u0026 diff (lazygit: d) |\n| \u003ckbd\u003eC\u003c/kbd\u003e | `git::CreatePullRequest` | Create pull request |\n| \u003ckbd\u003ei\u003c/kbd\u003e | `git::AddToGitignore` | Ignore file (lazygit: i) |\n| \u003ckbd\u003eI\u003c/kbd\u003e | `git::Init` | Git init |\n| \u003ckbd\u003e`\u003c/kbd\u003e or \u003ckbd\u003et\u003c/kbd\u003e | `git_panel::ToggleTreeView` | Toggle tree view (lazygit: `) |\n| \u003ckbd\u003e/\u003c/kbd\u003e | `pane::DeploySearch` | Search (lazygit: /) |\n| \u003ckbd\u003eq\u003c/kbd\u003e or \u003ckbd\u003e⌃\u003c/kbd\u003e + \u003ckbd\u003eq\u003c/kbd\u003e | `git_panel::Close` | Close panel (lazygit: q) |\n\n### Tasks 🔄\n\n| Task Name | Command | Description |\n|-----------|---------|-------------|\n| Claude Code | `claude` | Open Claude Code AI assistant |\n| Claude Code (Continue) | `claude --continue` | Continue previous Claude session |\n| Claude Code Usage | `bun x ccusage blocks` | Check Claude Code usage stats |\n| Git: Lazygit | `lazygit -p $ZED_WORKTREE_ROOT` | Open Lazygit in project root |\n| Git: Generate Git Logs file | `generate_git_log.sh \u003cbranch\u003e 400` | Generate Git logs (limited) |\n| Git: Generate Git Logs file (All) | `generate_git_log.sh \u003cbranch\u003e 999999` | Generate Git logs (all) |\n| LazySQL | `lazysql` | SQL TUI client |\n| LazyCurl | `lazycurl` | HTTP client TUI |\n| LazySSH | `lazyssh` | SSH manager TUI |\n| Files: FZF | `fzf` with bat preview | Advanced file finder with preview |\n| Files: Yazi | `yazi` | Terminal file manager |\n| Files: Rename Files (FZF) | `rename_files.sh` | Interactive batch file renaming |\n| Files: Generate Project Structure | `eza --tree --level=5 --git-ignore` | Generate project tree file |\n| Docker: Lazydocker | `lazydocker` | Docker TUI |\n| Kubernetes: Lazykube | `lazykube` | Kubernetes TUI |\n| Database: Redis CLI | `redis-cli` | Redis command line interface |\n| Laravel: Test | `php artisan test` | Run Laravel tests |\n| Laravel: Test (coverage) | `php artisan test --coverage` | Run tests with coverage |\n| Laravel: Migrate (fresh and seed) | `php artisan migrate:fresh --seed` | Fresh migration with seed |\n| Laravel: Migrate (fresh) | `php artisan migrate:fresh` | Fresh migration |\n\n\u003e [!NOTE]\n\u003e Tasks run in the current workspace context. `$ZED_WORKTREE_ROOT` is set to the project root.\n\u003e See the [Zed Tasks Documentation](https://zed.dev/docs/tasks) for more information.\n\n## Installation 📥\n\n### Automated Installation (Recommended)\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/kbrdn1/dotfiles/main/install.sh)\"\n```\n\nThis script performs a complete installation:\n1. Install Xcode Command Line Tools\n2. Install Nix package manager (multi-user daemon)\n3. Install Homebrew (for GUI apps)\n4. Clone nix-config repository\n5. Install Oh My Zsh\n6. Apply dotfiles with Chezmoi\n7. Install Home Manager and apply Nix configuration\n8. Configure macOS system settings\n9. Start services (Sketchybar, Borders)\n\n### Manual Installation\n\n| Step | Command | Description |\n|------|---------|-------------|\n| **1. Xcode CLI** | `xcode-select --install` | Install Apple command line tools |\n| **2. Nix** | `sh \u003c(curl -L https://nixos.org/nix/install) --daemon` | Install Nix (multi-user) |\n| **3. Homebrew** | `/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"` | Install Homebrew |\n| **4. Nix Config** | `git clone https://github.com/kbrdn1/nix-config.git ~/nix-config` | Clone Nix configuration |\n| **5. Oh My Zsh** | `sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"` | Install Zsh framework |\n| **6. Dotfiles** | `sh -c \"$(curl -fsLS get.chezmoi.io)\" -- init --apply https://github.com/kbrdn1/dotfiles.git` | Apply dotfiles |\n| **7. Home Manager** | `nix run home-manager/release-24.11 -- switch --flake ~/nix-config` | Install CLI tools (70+ packages) |\n\n### macOS System Configuration\n\n```bash\n# Keyboard - Fast key repeat\ndefaults write NSGlobalDomain KeyRepeat -int 1\n\n# Screenshots - Custom location and format\nmkdir -p ~/Screenshots\ndefaults write com.apple.screencapture location ~/Screenshots\ndefaults write com.apple.screencapture type png\ndefaults write com.apple.screencapture disable-shadow -bool true\n\n# Menu Bar - Auto-hide\ndefaults write NSGlobalDomain _HIHideMenuBar -bool true\n\n# Dock - Auto-hide with fast animation\ndefaults write com.apple.dock autohide -bool true\ndefaults write com.apple.dock autohide-time-modifier -float 0.15\n\n# Apply changes\nkillall SystemUIServer Dock\n```\n\n### Post-Installation Steps\n\n| Step | Action | Command |\n|------|--------|---------|\n| **1. Restart Terminal** | Apply shell changes | `exec zsh` |\n| **2. Verify Nix** | Check installed packages | `nix profile list` |\n| **3. Configure AeroSpace** | Reload window manager | `aerospace --reload` |\n| **4. Install SetApp** | Manual installation | Install from SetApp website |\n| **5. Restart Computer** | Complete setup | Full system restart |\n\n### Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Nix not found | Restart terminal or run `. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh` |\n| Home Manager fails | Ensure Nix daemon is running: `sudo launchctl load /Library/LaunchDaemons/org.nixos.nix-daemon.plist` |\n| Sketchybar not visible | Run `brew services restart sketchybar` |\n| AeroSpace not working | Check permissions in System Settings → Privacy \u0026 Security |\n\n### Migration Documentation\n\n- **Nix Migration**: See [MIGRATION_NIX.md](./MIGRATION_NIX.md) for complete ASDF → Nix migration details\n- **Homebrew Cleanup**: See [MIGRATION_HOMEBREW.md](./MIGRATION_HOMEBREW.md) for removed Homebrew packages\n- **AeroSpace Setup**: See [MIGRATION-YABAI-TO-AEROSPACE.md](./MIGRATION-YABAI-TO-AEROSPACE.md) for Yabai → AeroSpace migration\n\n## Acknowledgments 🙏\n\n| Project | Author | Contribution |\n|---------|--------|--------------|\n| [AeroSpace](https://github.com/nikitabobko/AeroSpace) | [@nikitabobko](https://github.com/nikitabobko) | Modern tiling window manager |\n| [Sketchybar](https://github.com/FelixKratz/SketchyBar) | [@FelixKratz](https://github.com/FelixKratz) | Custom menu bar and setup inspiration |\n| [JankyBorders](https://github.com/FelixKratz/JankyBorders) | [@FelixKratz](https://github.com/FelixKratz) | Window border visualization |\n| [Chezmoi](https://github.com/twpayne/chezmoi) | [@twpayne](https://github.com/twpayne) | Dotfiles management tool |\n| [Home Manager](https://github.com/nix-community/home-manager) | [Nix Community](https://github.com/nix-community) | Declarative user environment |\n| [Nix](https://nixos.org/) | [NixOS Foundation](https://nixos.org/community/) | Reproducible package management |\n\n## License 📄\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbrdn1%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkbrdn1%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkbrdn1%2Fdotfiles/lists"}