https://github.com/kbrdn1/dotfiles
My personal OS X dotfiles.
https://github.com/kbrdn1/dotfiles
brew chezmoi dotfiles ghostty neofetch omz sketchybar skhd svim thefuck zsh
Last synced: about 2 months ago
JSON representation
My personal OS X dotfiles.
- Host: GitHub
- URL: https://github.com/kbrdn1/dotfiles
- Owner: kbrdn1
- License: mit
- Created: 2024-03-28T16:01:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-15T07:39:11.000Z (5 months ago)
- Last Synced: 2025-05-15T08:41:13.612Z (5 months ago)
- Topics: brew, chezmoi, dotfiles, ghostty, neofetch, omz, sketchybar, skhd, svim, thefuck, zsh
- Language: Shell
- Homepage:
- Size: 7.45 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dotfiles
Welcome to my dotfiles repository! This repository is managed using [chezmoi](https://www.chezmoi.io/), a tool designed to manage your dotfiles across multiple machines.
## Table of Contents π
- [CLI Tools π οΈ](#cli-tools-)
- [GUI Tools π₯οΈ](#gui-tools-)
- [Applications π¦](#applications-)
- [SetApp Applications π―](#setapp-applications-)
- [Aliases & Functions π§](#aliases--functions-)
- [System Aliases π₯οΈ](#system-aliases)
- [Development Aliases π¨βπ»](#development-aliases)
- [GitHub Copilot Aliases π€](#github-copilot-aliases)
- [Window Manager Service Aliases πͺ](#window-manager-service-aliases)
- [Tmux Aliases π](#tmux-aliases)
- [Custom Functions βοΈ](#custom-functions)
- [Shortcuts & Keybindings β¨οΈ](#shortcuts--keybindings-)
- [Space & Window Navigation π](#space--window-navigation)
- [Window Management πͺ](#window-management)
- [Window Stacking & Resizing π](#window-stacking--resizing)
- [Miscellaneous Controls ποΈ](#miscellaneous-controls)
- [Tmux Keybindings π₯οΈ](#tmux-keybindings-)
- [Zed Configuration β‘](#zed-configuration-)
- [Keybindings πΉ](#keybindings-)
- [Vim-Mode Keybindings π§ββοΈ](#vim-mode-keybindings-)
- [Tasks π](#tasks-)
- [Installation π₯](#installation-)
- [Acknowledgments π](#acknowledgments-)
- [License π](#license-)### CLI Tools π
Our essential command-line tools:
- **Package Management**
- [Homebrew](https://brew.sh/): The missing package manager for macOS
- [Asdf](https://asdf-vm.com/): Multi-language version manager- **Core Utilities**
- [Coreutils](https://www.gnu.org/software/coreutils/): GNU core utilities
- [Curl](https://curl.se/): Data transfer tool
- [Git](https://git-scm.com/): Version control system
- [OpenSSL](https://www.openssl.org/): SSL/TLS toolkit
- [Bison](https://www.gnu.org/software/bison/): Parser generator- **Shell & Terminal**
- [Oh My Zsh](https://ohmyz.sh/): Zsh configuration framework
- [Powerlevel10k](https://github.com/romkatv/powerlevel10k): Zsh theme
- [Bat](https://github.com/sharkdp/bat): Enhanced cat command
- [Eza](https://eza.rocks/): Modern ls replacement
- [Yazi](https://github.com/sxyazi/yazi): Terminal file manager
- [Tmux](https://github.com/tmux/tmux): Terminal multiplexer- **Development Tools**
- [PHP](https://www.php.net/) & [Composer](https://getcomposer.org/): PHP ecosystem
- [Python](https://www.python.org/): Programming language
- [Symfony CLI](https://symfony.com/download): Symfony framework tools
- [Node.js](https://nodejs.org/): JavaScript runtime
- [Rust](https://www.rust-lang.org/): Systems programming language
- [Go](https://golang.org/): Programming language
- [Bun](https://bun.sh/): JavaScript runtime & toolkit
- [Deno](https://deno.land/): JavaScript runtime- **Productivity Tools**
- [GH](https://cli.github.com/): GitHub CLI
- [Lazygit](https://github.com/jesseduffield/lazygit): Git TUI
- [Lazydocker](https://github.com/jesseduffield/lazydocker): Docker TUI
- [Fzf](https://github.com/junegunn/fzf): Fuzzy finder
- [Zoxide](https://github.com/ajeetdsouza/zoxide): Smarter cd
- [Thefuck](https://github.com/nvbn/thefuck): Command correction
- [Neofetch](https://github.com/dylanaraps/neofetch): System info tool
- [Dashlane CLI](https://cli.dashlane.com/): Password manager CLI### GUI Tools π₯
Essential graphical tools:
- **Window Management**
- [Yabai](https://github.com/koekeishiya/yabai): Tiling window manager
- [Skhd](https://github.com/koekeishiya/skhd): Hotkey daemon
- [JankyBorders](https://github.com/FelixKratz/JankyBorders): Window borders
- [SketchyVim](https://github.com/FelixKratz/SketchyVim): Vim input fields- **UI Enhancement**
- [Sketchybar](https://github.com/FelixKratz/SketchyBar): Custom menu bar
- [SF Symbols](https://developer.apple.com/sf-symbols/): Apple system symbols
- [Sketchybar App Font](https://github.com/kvndrsslr/sketchybar-app-font): Icon font### Applications π¦
Key applications:
- **Development**
- [Zed](https://zed.dev/): Modern code editor
- [Ghostty](https://ghostty.org/): GPU-accelerated terminal
- [Warp](https://warp.dev/): Rust-based terminal
- [OrbStack](https://orbstack.dev/): Docker alternative
- [Postman](https://www.postman.com/): API platform- **Browsers & Communication**
- [Arc](https://arc.net/): Modern browser
- [Slack](https://slack.com/): Team communication
- [Discord](https://discord.com/): Community platform
- [WhatsApp](https://www.whatsapp.com/): Messaging- **Productivity**
- [Raycast](https://raycast.com/): Launcher & productivity tool
- [Obsidian](https://obsidian.md/): Knowledge base
- [Rectangle](https://rectangleapp.com/): Window management
- [Dashlane](https://www.dashlane.com/): Password manager
- [Figma](https://www.figma.com/): Design tool### SetApp Applications π¦
Premium applications via SetApp:
- **Development**
- [TablePlus](https://tableplus.com/): Database management- **Productivity**
- [CleanShot X](https://cleanshot.com/): Screenshot tool
- [PixelSnap](https://getpixelsnap.com/): Measurement tool
- [Sip](https://sipapp.io/): Color management
- [Yoink](https://eternalstorms.at/yoink/mac/): Drag and drop helper- **System Tools**
- [CleanMyMac X](https://macpaw.com/cleanmymac): System cleaner
- [NotchNook](https://lo.cafe/notchnook): Notch utility
- [Canary Mail](https://canarymail.io/): Email client
- [Clop](https://setapp.com/apps/clop): Media optimizer## Aliases & Functions π§
### System Aliases
| 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 |### Development Aliases
| 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 |### GitHub Copilot Aliases
| 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 |### Window Manager Service 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 |### Tmux Aliases
| 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 |## Shortcuts & Keybindings β¨οΈ
### Space & Window Navigation
| 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 |### Window Management
| 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 |### Window Stacking & Resizing
| 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 |### Miscellaneous Controls
| Shortcut | Action |
|----------|--------|
| β₯ + -/_ | Create new window in horizontal/vertical split |
| β§ + β₯ + Space | Toggle Sketchybar visibility |
| β§ + β₯ + r | Reload Sketchybar |### Tmux Keybindings π₯οΈ
| Shortcut | Action | Description |
|----------|--------|-------------|
| β + s | `prefix` | Prefix key (replaces default β + b) |#### Session Management
| 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 |#### Window Management
| 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 |#### Pane Management
| 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.## Zed Configuration β‘
My Zed editor configuration with custom keybindings and tasks.
### Keybindings πΉ
#### General Navigation
| 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 |#### Formatting and Movement
| 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 |#### Task Shortcuts
| 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 |#### AI and Terminal
| 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](https://zed.dev/docs/key-bindings) for more information.### Vim-Mode Keybindings π§ββοΈ
#### Editor Navigation
| 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 |#### Space Leader Commands
| 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 |#### Task Commands
| 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 |#### File & Search Operations
| 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 |#### AI Assistant
| 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 |#### Settings & Configuration
| 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](https://zed.dev/docs/vim) for more information.### Tasks π
| 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](https://zed.dev/docs/tasks) for more information.## Installation π₯
### One-Line Installation
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/kbrdn1/dotfiles/main/install.sh)"
```### Manual Installation
1. **Install Command Line Tools**
```bash
xcode-select --install
```2. **Install Homebrew**
```bash
/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)"
```3. **Install Oh My Zsh**
```bash
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```4. **Clone and Apply Dotfiles**
```bash
chezmoi init https://github.com/kbrdn1/dotfiles.git
chezmoi apply
```### Post-Installation
1. Configure system preferences:
```bash
# 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
```2. Set up Yabai permissions
3. Install SetApp applications manually
4. Restart your computer## Acknowledgments π
Special thanks to:
- [FelixKratz](https://github.com/FelixKratz) for window management setup inspiration
- [The Chezmoi team](https://github.com/twpayne/chezmoi) for the dotfiles management tool## License π
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.