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.
