Welcome to my dotfiles repository! This repository is managed using chezmoi, a tool designed to manage your dotfiles across multiple machines.
⚠️ IMPORTANT: Ce repo a migré de Yabai vers AeroSpace en août 2025
Ancien setup:
- Yabai (window manager avec SIP désactivé)
- skhd (raccourcis clavier)
Nouveau setup:
- AeroSpace: Window manager moderne (pas de SIP requis)
- Karabiner: Gestion intelligente raccourcis (exclusion IDE)
- skhd: Raccourcis Alt droite uniquement
📖 Documentation complète: MIGRATION-YABAI-TO-AEROSPACE.md
AeroSpace (window manager) → skhd (Alt droite) → Karabiner (désactive dans IDEs)
-
✅ Fonctionne avec SIP activé
-
✅ Zéro conflit macOS
-
✅ Raccourcis IDE préservés
-
✅ 10 workspaces (au lieu de 5)
-
✅ Documentation complète (1762 lignes)
Our essential command-line tools:
-
Package Management
-
Core Utilities
-
Shell & Terminal
-
Development Tools
-
Productivity Tools
- GH: GitHub CLI
- Lazygit: Git TUI
- Lazydocker: Docker TUI
- Fzf: Fuzzy finder
- Zoxide: Smarter cd
- Thefuck: Command correction
- Neofetch: System info tool
- Dashlane CLI: Password manager CLI
Essential graphical tools:
-
Window Management
- Yabai: Tiling window manager
- Skhd: Hotkey daemon
- JankyBorders: Window borders
- SketchyVim: Vim input fields
-
UI Enhancement
- Sketchybar: Custom menu bar
- SF Symbols: Apple system symbols
- Sketchybar App Font: Icon font
Key applications:
-
Development
-
Browsers & Communication
-
Productivity
Premium applications via SetApp:
-
Development
- TablePlus: Database management
-
Productivity
- CleanShot X: Screenshot tool
- PixelSnap: Measurement tool
- Sip: Color management
- Yoink: Drag and drop helper
-
System Tools
- CleanMyMac X: System cleaner
- NotchNook: Notch utility
- Canary Mail: Email client
- Clop: Media optimizer
| Alias | Command | Description |
|---|---|---|
x |
exit |
Exit terminal |
config |
cd $XDG_CONFIG_HOME |
Navigate to config directory |
edit-config |
$EDITOR $XDG_CONFIG_HOME |
Edit config directory |
reload-zsh |
source ~/.zshrc |
Reload ZSH configuration |
edit-zsh |
$EDITOR ~/.zshrc |
Edit ZSH configuration |
| Alias | Command | Description |
|---|---|---|
py, python |
/usr/bin/python3 |
Python 3 |
pa |
php artisan |
PHP Artisan CLI |
a, adonis |
node ace |
Adonis Ace CLI |
ls |
eza --color=always --long --git --no-filesize --icons=always --no-time --no-user --no-permissions --group-directories-first |
Enhanced listing |
cd |
zoxide |
Enhanced directory navigation |
lg |
lazygit |
Terminal UI for Git |
lzd |
lazydocker |
Terminal UI for Docker |
f |
fzf --tmux top,50% |
Fuzzy finder in Tmux fixed on top with 50% height |
| Alias | Command | Description |
|---|---|---|
gcs |
gh copilot suggest |
Get command suggestions |
gce |
gh copilot explain |
Explain commands |
gcc |
gh copilot config |
Configure Copilot |
gca |
gh copilot alias |
Manage Copilot aliases |
⚠️ IMPORTANT: Ce repo a migré de Yabai vers AeroSpace en août 2025
Ancien setup:
- Yabai (window manager avec SIP désactivé)
- skhd (raccourcis clavier)
Nouveau setup:
- AeroSpace: Window manager moderne (pas de SIP requis)
- Karabiner: Gestion intelligente raccourcis (exclusion IDE)
- skhd: Raccourcis Alt droite uniquement
📖 Documentation complète: MIGRATION-YABAI-TO-AEROSPACE.md
AeroSpace (window manager) → skhd (Alt droite) → Karabiner (désactive dans IDEs)
- ✅ Fonctionne avec SIP activé
- ✅ Zéro conflit macOS
- ✅ Raccourcis IDE préservés
- ✅ 10 workspaces (au lieu de 5)
- ✅ Documentation complète (1762 lignes)
| Alias | Command | Description |
|---|---|---|
reload-sketchybar |
brew services restart sketchybar |
Restart Sketchybar |
edit-sketchybar |
$EDITOR $XDG_CONFIG_HOME/sketchybar |
Edit Sketchybar config |
reload-borders |
brew services restart borders |
Restart JankyBorders |
edit-borders |
$EDITOR $XDG_CONFIG_HOME/borders |
Edit JankyBorders config |
reload-yabai |
yabai --restart-service |
Restart Yabai |
edit-yabai |
$EDITOR $XDG_CONFIG_HOME/yabai |
Edit Yabai config |
reload-skhd |
skhd --restart-service |
Restart SKHD |
edit-skhd |
$EDITOR $XDG_CONFIG_HOME/skhd/skhdrc |
Edit SKHD config |
| Alias | Command | Description |
|---|---|---|
t |
tmux -2 |
Launch Tmux with 256 colors |
reload-tmux |
tmux source-file ~/.tmux.conf |
Reload Tmux configuration |
edit-tmux |
$EDITOR ~/.tmux.conf |
Edit Tmux configuration |
| Shortcut | Action |
|---|---|
| ⌥ + 1-5 | Focus space 1-5 on current display |
| ⌥ + h/j/k/l | Focus window in direction (west/south/north/east) |
| ⌥ + 0 | Focus first window |
| ⌥ + $ | Focus last window |
| ⌥ + Space | Toggle float window |
| ⇧ + ⌥ + f | Toggle fullscreen |
| ⌥ + f | Toggle parent zoom |
| Shortcut | Action |
|---|---|
| ⇧ + ⌥ + h/j/k/l | Move window in direction |
| ⇧ + ⌥ + s | Toggle split orientation |
| ⇧ + ⌥ + 1-5 | Move window to space 1-5 |
| ⇧ + ⌥ + b/n | Move window to prev/next space |
| Shortcut | Action |
|---|---|
| ⇧ + ⌃ + h/j/k/l | Stack window in direction |
| ⇧ + ⌃ + b/p | Navigate through stack |
| ⌃ + ⌥ + h/j/k/l | Resize window |
| ⌃ + ⌥ + e | Equalize window sizes |
| ⌃ + ⌥ + g | Toggle gaps |
| Shortcut | Action |
|---|---|
| ⌥ + -/_ | Create new window in horizontal/vertical split |
| ⇧ + ⌥ + Space | Toggle Sketchybar visibility |
| ⇧ + ⌥ + r | Reload Sketchybar |
| Shortcut | Action | Description |
|---|---|---|
| ⌃ + s | prefix |
Prefix key (replaces default ⌃ + b) |
| Shortcut | Action | Description |
|---|---|---|
| prefix + r | source-file ~/.tmux.conf |
Reload tmux configuration |
| prefix + o | tmux-sessionx |
Open session manager |
| prefix + Space | which-key |
Show available keybindings |
| Shortcut | Action | Description |
|---|---|---|
| prefix + c | new-window |
Create new window |
| prefix + ⌃ + H | previous-window |
Go to previous window |
| prefix + ⌃ + L | next-window |
Go to next window |
| prefix + ⌃ + x | kill-window |
Close current window |
| Shortcut | Action | Description |
|---|---|---|
| prefix + h | select-pane -L |
Focus left pane |
| prefix + j | select-pane -D |
Focus down pane |
| prefix + k | select-pane -U |
Focus up pane |
| prefix + l | select-pane -R |
Focus right pane |
| prefix + x | kill-pane |
Close current pane |
| prefix + - | split-window -h |
Split pane horizontally |
| prefix + _ | split-window -v |
Split pane vertically |
Note
The prefix key (⌃ + s) must be pressed before using most tmux commands. After pressing the prefix key, release it before pressing the command key.
My Zed editor configuration with custom keybindings and tasks.
| Shortcut | Context | Action | Description |
|---|---|---|---|
| ⌃ + h | Editor | workspace::ActivatePaneLeft |
Focus left pane |
| ⌃ + j | Editor | workspace::ActivatePaneDown |
Focus down pane |
| ⌃ + k | Editor | workspace::ActivatePaneUp |
Focus up pane |
| ⌃ + l | Editor | workspace::ActivatePaneRight |
Focus right pane |
| ⌘ + @ | Editor | editor::RestartLanguageServer |
Restart language server |
| ⌘ + ù | Editor | git_panel::ToggleFocus |
Toggle Git panel |
| ⌘ + < | Editor | editor::ToggleInlayHints |
Toggle inlay hints |
| ⌘ + ⇧ + k | Editor | editor::DeleteLine |
Delete current line |
| ⌘ + g | Editor | editor::SelectLargerSyntaxNode |
Select larger syntax node |
| ⌘ + ⇧ + g | Editor | editor::SelectSmallerSyntaxNode |
Select smaller syntax node |
| ⌘ + i | Editor | assistant::InlineAssist |
Inline AI assist |
| ⌘ + ; | Editor | go_to_line::Toggle |
Toggle go to line |
| ⌘ + ⇧ + r | Editor | editor::Rename |
Rename symbol |
| Shortcut | Context | Action | Description |
|---|---|---|---|
| ⌥ + ⇧ + f | Editor | editor::Format |
Format current file |
| ⌥ + k | Editor | editor::MoveLineUp |
Move line up |
| ⌥ + j | Editor | editor::MoveLineDown |
Move line down |
| ⌥ + ↑ | Editor | editor::MoveLineUp |
Move line up |
| ⌥ + ↓ | Editor | editor::MoveLineDown |
Move line down |
| ⌥ + ⇧ + p | Editor | markdown::OpenPreview |
Open markdown preview |
| Shortcut | Context | Action | Description |
|---|---|---|---|
| ⌘ + ⇧ + t | Workspace | task::Spawn |
Open task launcher |
| ⌥ + f | Workspace | task::Spawn "Files: FZF" |
Open FZF file finder |
| ⌥ + y | Workspace | task::Spawn "Files: Yazi" |
Open Yazi file manager |
| ⌥ + g | Workspace | task::Spawn "Git: Lazygit" |
Open Lazygit |
| ⌥ + r | Workspace | task::Spawn "Files: Rename Files (Script)" |
Run file rename script |
| ⌥ + d | Workspace | task::Spawn "Database: Redis CLI" |
Open Redis CLI |
| ⌥ + ⇧ + d | Workspace | task::Spawn "Docker: Lazydocker" |
Open Lazydocker |
| ⌥ + ⇧ + k | Workspace | task::Spawn "Kubernetes: Lazykube" |
Open Lazykube |
| ⌥ + t | Workspace | task::Spawn "Laravel: Test" |
Run Laravel tests |
| ⌥ + ⇧ + t | Workspace | task::Spawn "Laravel: Test (coverage)" |
Run Laravel tests with coverage |
| ⌥ + ⇧ + m | Workspace | task::Spawn "Laravel: Migrate (fresh and seed)" |
Run Laravel migration fresh with seed |
| ⌥ + p | Workspace | task::Spawn "Files: Generate Project Structure file" |
Generate project structure file |
| Shortcut | Context | Action | Description |
|---|---|---|---|
| ⌘ + ⌥ + i | Workspace | assistant::ToggleFocus |
Toggle AI assistant |
| ⌃ + Esc | Terminal | terminal::ToggleViMode |
Toggle Vi mode in terminal |
Note
See the Zed Keybindings Documentation for more information.
| Shortcut | Action | Description |
|---|---|---|
| z + a | editor::ToggleFold |
Toggle fold at cursor |
| z + l | editor::Fold |
Fold at cursor |
| z + L | editor::FoldAll |
Fold all regions |
| z + h | editor::UnfoldLines |
Unfold at cursor |
| z + H | editor::UnfoldAll |
Unfold all regions |
| ⌃ + n | pane::ActivateNextItem |
Next tab/buffer |
| ⌃ + b | pane::ActivatePreviousItem |
Previous tab/buffer |
| ⌃ + x | pane::CloseActiveItem |
Close active tab/buffer |
| ⌃ + - | pane::SplitRight |
Split pane right |
| ⌃ + = | pane::SplitDown |
Split pane down |
| Shortcut | Action | Description |
|---|---|---|
| Space + ; | go_to_line::Toggle |
Toggle go to line |
| Space + R | editor::Rename |
Rename symbol |
| Space + @ | editor::RestartLanguageServer |
Restart language server |
| Space + g | editor::SelectLargerSyntaxNode |
Select larger syntax node |
| Space + G | editor::SelectSmallerSyntaxNode |
Select smaller syntax node |
| Space + j | terminal_panel::ToggleFocus |
Toggle terminal panel |
| Space + ù | git_panel::ToggleFocus |
Toggle Git panel |
| Space + 0 | vim::StartOfDocument |
Go to start of document |
| Space + o | editor::Hover |
Show hover information |
| Space + Tab | pane::ActivateNextItem |
Next tab/buffer |
| Space + ⇧ + Tab | pane::ActivatePreviousItem |
Previous tab/buffer |
| Space + ⇧ + s | project_symbols::Toggle |
Toggle project symbols |
| Space + . | editor::ToggleCodeActions |
Toggle code actions |
| Space + ⇧ + a | editor::FindAllReferences |
Find all references |
| Space + w + d | pane::CloseActiveItem |
Close active item |
| Space + * | vim::MoveToNext (partial_word) |
Move to next occurrence of word |
| Space + ¨ | vim::MoveToPrevious (partial_word) |
Move to previous occurrence of word |
| Shortcut | Action | Description |
|---|---|---|
| Space + t + r | task::Spawn "Files: Rename Files (Script)" |
Run file rename script |
| Space + t + f | task::Spawn "Files: FZF" |
Open FZF file finder |
| Space + t + y | task::Spawn "Files: Yazi" |
Open Yazi file manager |
| Space + t + d | task::Spawn "Docker: Lazydocker" |
Open Lazydocker |
| Space + t + k | task::Spawn "Kubernetes: Lazykube" |
Open Lazykube |
| Space + t + p | task::Spawn "Files: Generate Project Structure file" |
Generate project structure file |
| Space + t + l | task::Spawn "Git: Generate Git Logs file" |
Generate Git logs file |
| Space + t + L | task::Spawn "Git: Generate Git Logs file (All)" |
Generate all Git logs file |
| Space + g + g | task::Spawn "Git: Lazygit" |
Open Lazygit |
| Space + t + t | task::Spawn "Laravel: Test" |
Run Laravel tests |
| Space + t + T | task::Spawn "Laravel: Test (coverage)" |
Run Laravel tests with coverage |
| Space + M | task::Spawn "Laravel: Migrate (fresh and seed)" |
Run Laravel migration fresh with seed |
| Shortcut | Action | Description |
|---|---|---|
| Space + f + f | file_finder::Toggle |
Toggle file finder |
| Space + f + p | projects::OpenRecent |
Open recent project |
| Space + f + b | vim::Search |
Search in current file |
| Space + f + s | outline::Toggle |
Toggle outline view |
| Space + f + r | search::ToggleReplace |
Toggle search & replace |
| Space + f + l | go_to_line::Toggle |
Toggle go to line |
| Space + d | editor::SelectAllMatches |
Select all matches |
| Space + e | project_panel::ToggleFocus |
Toggle project panel |
| Space + b + f | editor::Format |
Format current file |
| Shortcut | Action | Description |
|---|---|---|
| Space + i | assistant::InlineAssist |
Inline AI assist |
| Space + c + c + o | assistant::ToggleFocus |
Toggle AI assistant |
| Space + c + c + p | assistant::QuoteSelection |
Quote selected text to assistant |
| Shortcut | Action | Description |
|---|---|---|
| Space + s + k | zed::OpenKeymap |
Open keymap settings |
| Space + s + s | zed::OpenSettings |
Open settings |
| Space + s + t | zed::OpenTasks |
Open tasks |
| Space + s + T | theme_selector::Toggle |
Toggle theme selector |
| Space + s + d | diagnostics::Deploy |
Deploy diagnostics |
Note
You can use the default Vim keybindings in Zed by enabling Vim mode in the settings. See the Zed Vim Documentation for more information.
| Task Name | Command | Description |
|---|---|---|
| Git: Generate Git Logs file | ~/.config/zed/tasks/generate_git_log.sh $(git rev-parse --abbrev-ref HEAD) 400 |
Generate Git logs for current branch (limited entries) |
| Git: Generate Git Logs file (All) | ~/.config/zed/tasks/generate_git_log.sh $(git rev-parse --abbrev-ref HEAD) 999999 |
Generate Git logs for current branch (all entries) |
| Git: Lazygit | lazygit -p $ZED_WORKTREE_ROOT |
Open Lazygit in project root |
| Files: Rename Files (Script) | ~/.config/zed/tasks/rename_files.sh "${1:Path}" "${2:Pattern}" "${3:Find}" "${4:Replace}" |
Interactive batch file renaming with parameters |
| Files: FZF | fzf with preview and custom bindings |
Advanced file finder with preview and syntax highlighting |
| Files: Yazi | yazi |
Terminal file manager in project root |
| Files: Generate Project Structure | eza --tree --level=5 --git-ignore |
Generate project structure avoiding vendor/node_modules |
| Laravel: Test | php artisan test |
Run Laravel tests |
| Laravel: Test (coverage) | php artisan test --coverage |
Run Laravel tests with coverage |
| Laravel: Migrate (fresh and seed) | php artisan migrate:fresh --seed |
Fresh database migration with seed |
| Laravel: Migrate (fresh) | php artisan migrate:fresh |
Fresh database migration without seed |
| Docker: Lazydocker | lazydocker |
Terminal UI for Docker |
| Kubernetes: Lazykube | lazykube |
Terminal UI for Kubernetes |
| Database: Redis CLI | redis-cli |
Redis command line interface |
Note
The tasks are executed in the context of the current workspace. The ZED_WORKTREE_ROOT environment variable is set to the root directory of the current workspace.
See the Zed Tasks Documentation for more information.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/kbrdn1/dotfiles/main/install.sh)"- Install Command Line Tools
xcode-select --install- Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"- Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"- Clone and Apply Dotfiles
chezmoi init https://github.com/kbrdn1/dotfiles.git
chezmoi apply- Configure system preferences:
# Keyboard
defaults write NSGlobalDomain KeyRepeat -int 1
# Screenshots
mkdir ~/Screenshots
defaults write com.apple.screencapture location ~/Screenshots
defaults write com.apple.screencapture type png
defaults write com.apple.screencapture disable-shadow -bool true
# Menu Bar
defaults write NSGlobalDomain _HIHideMenuBar -bool true
# Dock
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock autohide-time-modifier -float 0.15- Set up Yabai permissions
- Install SetApp applications manually
- Restart your computer
Special thanks to:
- FelixKratz for window management setup inspiration
- The Chezmoi team for the dotfiles management tool
This project is licensed under the MIT License - see the LICENSE file for details.