Welcome to my dotfiles repository! This repository is managed using chezmoi, a tool designed to manage your dotfiles across multiple machines.
- CLI Tools 🛠️
- GUI Tools 🖥️
- Applications 📦
- SetApp Applications 🎯
- Aliases & Functions 🔧
- Shortcuts & Keybindings ⌨️
- Zed Configuration ⚡
- Installation 📥
- Acknowledgments 🙏
- License 📄
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 |
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.