GNU Stow is used because it creates symbolic links from a centralized dotfiles repository to your home directory, making it easy to:
Version control: All configs in one git repository
Easy deployment: Single command to install all configs
Selective installation: Choose which configs to install
Safe updates: Changes are immediately reflected without copying
Configuration (from .stowrc):
--target=~ # Install symlinks to home directory--ignore=.stowrc # Don't symlink the stow config itself--dotfiles # Convert 'dot-' prefix to '.'--verbose=1 # Show what's being done
The --dotfiles flag is particularly useful because it allows files like dot-config/ in the repository to become .config/ in your home directory, making them visible in git without being hidden.Example:
Repository: dot-config/hypr/hyprland.conf
Home directory: ~/.config/hypr/hyprland.conf (symlinked)
What is the 12-factor design approach mentioned in the configs?
The 12-factor approach (from 12factor.net) is a methodology for building maintainable applications. In the context of these dotfiles:Separation of Configuration and Code:
Base configurations are tracked in git
Environment-specific settings go in local files (not tracked)
Local files are automatically loaded if they exist
Example from tmux.conf:127:
# Load local configuration if it exists (Config factor)if-shell "[ -f ~/.config/tmux/tmux.local.conf ]" 'source ~/.config/tmux/tmux.local.conf'
Benefits:
Same base config works on multiple machines
Machine-specific tweaks in local files
Base config stays clean and portable
No risk of committing sensitive local settings
Recommended practice:
Keep shared settings in tracked files
Put machine-specific settings in .local.conf files
Add .local.conf to .gitignore
Can I use parts of this config without installing everything?
Yes! The configuration is modular and can be used selectively.Option 1: Selective Stow
Instead of installing all dotfiles, stow specific directories:
# Only install tmux configstow dot-config/tmux# Only install hypr configstow dot-config/hypr
Option 2: Copy Individual Files
Copy specific config files you want:
cp -r dot-config/tmux ~/.config/
Option 3: Use as Reference
Browse the repository and copy snippets to your existing configs:
Tmux keybindings from tmux.conf
Hyprland animations from modules/look.conf
Waybar modules from waybar/config.jsonc
Modular Structure:
Each application’s config is independent:
dot-config/tmux/ - Complete tmux setup
dot-config/hypr/ - Hyprland window manager
dot-config/waybar/ - Status bar
dot-config/rofi/ - Application launcher
Dependencies between configs are minimal, making it easy to pick what you need.
# Switch to laptop configcd ~/.config/hyprmv hyprland.conf hyprland-desktop.confln -s modules/hyprland-laptop.conf hyprland.conf# Switch back to desktoprm hyprland.confmv hyprland-desktop.conf hyprland.conf
Method 2: Environment-Based
Create a script in your shell profile:
# In ~/.bashrc or ~/.zshrcif [ -f /sys/class/power_supply/BAT0 ]; then # Laptop detected export HYPR_CONFIG="laptop"else # Desktop export HYPR_CONFIG="desktop"fi
Method 3: Local Override
Keep the base config and override specific settings in a local file sourced at the end.After switching, reload Hyprland: Super + Shift + R
How do I customize the Catppuccin theme colors?
The configuration uses Catppuccin Mocha theme across multiple applications.Tmux (tmux.conf:51):
set -g @catppuccin_flavour 'mocha'
Available flavours: latte, frappe, macchiato, mochaHyprland Border Colors:
Edit variables in hyprland.conf:
# General system logjournalctl -xe# User session logsjournalctl --user -xe# Display manager logs (GDM/SDDM)journalctl -u gdm -f
X11/Wayland session logs:
# Wayland sessioncat ~/.local/share/wayland-sessions/# Check environmentecho $XDG_SESSION_TYPE # Should show 'wayland'
How do I reload configurations without logging out?
Most configurations can be reloaded without a full logout:Hyprland:
# Reload confighyprctl reload# Or use keybindSuper + Shift + R# Restart Hyprland (preserves session)hyprctl dispatch exit
Waybar:
# Hard reload (recommended for config changes)killall waybar && waybar &# Soft reload (style changes only)killall -SIGUSR2 waybar# Using just commandcd ~/.config/waybar && just reload
Tmux:
# From outside tmuxtmux source ~/.config/tmux/tmux.conf# From inside tmux# Press: Ctrl+Space then type::source ~/.config/tmux/tmux.conf# Reload all tmux sessionstmux list-sessions -F '#{session_name}' | xargs -I {} tmux send-keys -t {} 'tmux source ~/.config/tmux/tmux.conf' Enter
Environment Variables:
# Source shell configsource ~/.bashrc # or ~/.zshrc# For Hyprland env vars, reload is neededhyprctl reload