A modular dotfiles repository for Arch Linux systems, featuring a modern tmux + neovim Personal Development Environment (PDE) with kitty terminal emulator. Built with flexibility and productivity in mind, using GNU Stow for symlink management.
- Terminal Multiplexer: tmux with TPM and custom prefix (Ctrl+s)
- Terminal Emulator: kitty with minimal padding
- Text Editor: neovim (managed as git submodule)
- IDE Integration: Comprehensive IdeaVim configuration with LSP-like mappings
- Shell: ZSH with modular configuration system
- Prompt: Starship with minimal left prompt and rich right-side information
- eza - Modern ls replacement with icons and git integration
- zoxide - Smart directory jumping (cd replacement)
- bat - Syntax-highlighted cat alternative
- fzf - Fuzzy finder for files and command history
- yay - AUR helper for Arch Linux
- gitui - Terminal UI for git with vim keybindings
Currently using Catppuccin Mocha theme across:
- tmux
- kitty
- (Commented alternatives: Dracula, Rose Pine)
-
Kanata Keyboard Remapping:
- Caps Lock → Esc (tap) / Ctrl (hold)
- hjkl → Arrow keys when Caps Lock held
- Runs as systemd service
-
Workmode Script:
- Blocks distracting websites (YouTube, Twitter, LinkedIn, Instagram, Facebook)
- Interactive WORK/WASTE mode toggle
-
Git Integration:
- Open current repo in browser with
open-github.sh - gitui for terminal-based git workflow
- Open current repo in browser with
Three distinct modules managed via GNU Stow:
- default - Core configurations for daily use
- dwm-addons - Additional configs for DWM window manager
- deprecated - Legacy Taskwarrior/Timewarrior configs (optional)
The following are installed automatically by the arch-quick-setup.sh script:
Essential:
git
tmux
neovim
kitty
stow
zsh
ttf-jetbrains-mono-nerd (JetBrains Mono Nerd Font)
Modern CLI Tools:
fzf
bat
zoxide
eza
yay
starship
gitui
Productivity:
kanata-bin (AUR)
Development:
nvm (Node Version Manager)
sdkman (JVM tool management)
For dwm-addons module:
dwm
brightnessctl
dunst
xorg-xsetroot
dwmbar-git (AUR)
For deprecated module:
taskwarrior
timewarrior
taskopen
fcron (or any cron implementation)
Clone the repository with submodules:
cd ~
git clone https://github.com/GyroZepelix/.dotfiles.git --recursive
cd .dotfilesRun the automated installation script:
cd install-scripts
chmod +x arch-quick-setup.sh
./arch-quick-setup.shThe script will:
- Install all core dependencies
- Symlink default dotfiles using GNU Stow
- Install TPM (Tmux Plugin Manager)
- Set up Kanata with systemd service
- Change default shell to ZSH
- Optionally set up Taskwarrior sync
If you prefer manual installation:
cd ~/.dotfiles
stow defaultInstall TPM manually:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmOpen tmux and install plugins:
tmux
# Press Ctrl+s then I to install pluginsOpen neovim to install plugins:
nvim
# Wait for Lazy to install all pluginsImportant: Reboot your system for Kanata keyboard remapping to work properly.
rebootInstall additional configurations for DWM:
cd install-scripts
chmod +x patch-dwm.sh
./patch-dwm.shThis adds:
.xinitrcwith dunst, dwmbar, and dwm startup- dwmbar status bar configuration
- DWM-specific shell aliases
Install legacy task and time tracking tools:
cd install-scripts
chmod +x patch-deprecated.sh
./patch-deprecated.shWarning: These configurations are no longer actively maintained and come with zero guarantees for functionality.
If you choose to use Taskwarrior and Timewarrior, you can set up syncing:
- Taskwarrior: Uses taskchampion-sync-server
- Timewarrior: Uses timew-sync-server
The deprecated module includes:
- Automated sync scripts with file locking
- Systemd services and timers for automatic syncing
- Manual sync scripts:
taskw-update.shandtimew-update.sh
.dotfiles/
├── default/ # Core configurations
│ ├── .config/
│ │ ├── tmux/ # Tmux config + TPM
│ │ ├── kitty/ # Kitty terminal config
│ │ ├── kanata/ # Keyboard remapping
│ │ ├── gitui/ # Git TUI config
│ │ └── starship.toml # Shell prompt
│ ├── .scripts/
│ │ ├── shell_config/ # Modular ZSH configs
│ │ ├── bin/ # Custom utility scripts
│ │ └── completion_zsh/ # Shell completions
│ ├── .zshrc # Main ZSH configuration
│ └── .ideavimrc # IdeaVim configuration
│
├── dwm-addons/ # DWM-specific configs
│ ├── .xinitrc
│ └── .config/dwmbar/
│
├── deprecated/ # Legacy task management
│ ├── .config/task/
│ ├── .config/timew/
│ └── .local/bin/ # Sync scripts
│
└── install-scripts/ # Automated setup
├── arch-quick-setup.sh
├── patch-dwm.sh
├── patch-deprecated.sh
└── systemd-services/ # Service definitions
ZSH configuration is split into numbered modules in ~/.scripts/shell_config/:
01_add_scripts_to_path.zsh- Adds custom scripts to PATH02-advanced_terminal.zsh- Modern CLI tool aliases and integrations03-neovim_default_editor.zsh- Sets neovim as default editor04-zsh_bindkey.zsh- Advanced keybindings and history search10-dwm.zsh- DWM-specific aliases (if installed)
- Custom prefix:
Ctrl+s - Plugins: vim-tmux-navigator, tmux-resurrect, tmux-yank, cpu/battery monitoring
- Catppuccin Mocha theme
- Seamless vim-tmux navigation
Comprehensive 334-line configuration with:
- LSP-like mappings for code navigation
- Debugging integration
- Git integration
- Custom leader key workflows
- workmode.sh - Block distracting websites for focus sessions
- open-github.sh - Open current git repository in browser
- task-topprojects.sh - View top Taskwarrior projects (deprecated module)
Theme alternatives are commented in the configuration files:
tmux (~/.config/tmux/tmux.conf):
# Uncomment desired theme
# set -g @plugin 'rose-pine/tmux'
# set -g @plugin 'dracula/tmux'
set -g @plugin 'catppuccin/tmux'kitty (~/.config/kitty/kitty.conf):
# Uncomment desired theme
# include ./themes/dracula.conf
include ./themes/catppuccin-mocha.confCreate a new file in ~/.scripts/shell_config/ with a numbered prefix:
echo 'alias myalias="command"' > ~/.scripts/shell_config/05-custom.zshThe file will be automatically sourced on next shell startup.
- Caps Lock (tap): Escape
- Caps Lock (hold): Control
- Caps Lock + h/j/k/l: Left/Down/Up/Right arrows
- prefix + I: Install plugins
- prefix + |: Split window vertically
- prefix + -: Split window horizontally
- Ctrl+h/j/k/l: Navigate between tmux panes and vim windows
- Ensure you're in the
uinputgroup:groups - Check service status:
systemctl --user status kanata - Reboot after installation
- Install TPM: Press
prefix + Iin tmux - Check TPM directory:
ls ~/.tmux/plugins/tpm
- Ensure you're using ZSH:
echo $SHELL - Change shell:
chsh -s $(which zsh) - Source configuration:
source ~/.zshrc
- Open neovim and run:
:Lazy sync - Check neovim health:
:checkhealth
Your contributions are always welcome! If you would like to improve the dotfiles or have suggestions:
- Fork the repository
- Create a new branch with your improvements:
git checkout -b feature-xyz - Make your changes or additions
- Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin feature-xyz - Create a new Pull Request
Please ensure your commit messages are clear and code changes are well-documented. Code reviews and discussions about improvements are highly appreciated.
Feel free to use and modify these dotfiles for your own setup.
- Catppuccin - Theme
- TPM - Tmux Plugin Manager
- Kanata - Keyboard remapper
- Starship - Cross-shell prompt
- GNU Stow - Symlink farm manager