CachyOS (Arch) + Hyprland desktop configuration with Waybar and dynamic wallpaper theming via matugen. Managed with GNU Stow.
- Source Color:
#fd5622(vivid orange) - Accent:
#e53935(red) - Style: Kanagawa Dragon inspired, dynamic Material You palette via matugen
- Wallpapers change the entire color scheme automatically (waybar, rofi, swaync, swayosd, hyprland)
| Component | Choice |
|---|---|
| WM | Hyprland (dwindle layout) |
| Bar | Waybar |
| Notifications | SwayNC |
| OSD | SwayOSD |
| Session | greetd + ReGreet |
| Terminal | Kitty |
| Shell (CLI) | Zsh + Oh My Zsh + Powerlevel10k |
| Editor | Vim + VSCodium |
| File Manager | Thunar |
| Browser | Zen Browser |
| Launcher | Rofi (Wayland fork) |
| GTK Theme | adw-gtk3-dark + matugen dynamic colors |
| Qt Theme | Kvantum (WhiteSurDark) via qt6ct |
| Icons | Papirus-Dark |
| Cursor | Capitaine Cursors |
| Font | JetBrainsMono Nerd Font |
| Screen Record | gpu-screen-recorder (system + mic) |
| Images | Loupe |
| Archives | File Roller |
| Monitoring | btop |
| Backup | restic + rclone → kDrive |
| Git Identity | git-identity-manager |
git clone git@github.com:Dxsk/dotenv.git ~/Documents/github.com/Dxsk/dotenv
cd ~/Documents/github.com/Dxsk/dotenv
bash scripts/install.shThe install script will:
- Install
yayandstowif missing - Install all packages (pacman + AUR)
- Clean up old nix symlinks (if migrating)
- Stow dotfiles to
~/ - Clone/update linked projects (git-identity-manager, mtd)
- Enable systemd backup timers
- Apply system tuning (sysctl, dbus limits)
After install, log out and back in for full effect.
make install # stow dotfiles to ~/
make uninstall # remove symlinks
make reinstall # restow (after adding/removing files)
make check # dry-rundot # alias: cd to dotenv + stowdotenv/
├── .config/
│ ├── hypr/
│ │ ├── hyprland.conf # Main config (dwindle, i3-like binds)
│ │ ├── hyprlock.conf # Lock screen
│ │ ├── hypridle.conf # Idle timeouts
│ │ ├── hyprqt6engine.conf # Qt6 engine config
│ │ ├── monitors.conf # Monitor layout & refresh rates
│ │ └── workspaces.conf # Workspace assignments per monitor
│ ├── waybar/
│ │ ├── config.jsonc # Top bar config
│ │ ├── sidebar.jsonc # Side bar config
│ │ ├── style.css # Waybar styling
│ │ └── scripts/ # Waybar helper scripts
│ ├── matugen/
│ │ ├── config.toml # Dynamic theming config
│ │ └── templates/ # Color templates (waybar, rofi, swaync, swayosd, hypr)
│ ├── rofi/ # App launcher config & theme
│ ├── swaync/ # Notification center config
│ ├── swayosd/ # OSD overlay config
│ ├── caelestia/ # Caelestia CLI/shell config (legacy theming)
│ ├── kitty/
│ │ ├── kitty.conf
│ │ └── kanagawa-dragon.conf
│ ├── btop/btop.conf # System monitor config
│ ├── gtk-3.0/
│ │ ├── settings.ini # GTK3 theme (adw-gtk3-dark)
│ │ ├── gtk.css # Custom GTK3 colors
│ │ └── thunar.css # Thunar custom theme
│ ├── gtk-4.0/
│ │ ├── settings.ini # GTK4 theme
│ │ ├── gtk.css # Custom GTK4 colors
│ │ └── thunar.css # Thunar custom theme
│ ├── qt6ct/
│ │ ├── qt6ct.conf # Qt6 theme (Kvantum)
│ │ └── colors/ambxst.colors # Custom Qt color scheme
│ ├── Kvantum/kvantum.kvconfig # Kvantum theme (WhiteSurDark)
│ ├── zsh/ # Zsh modules (sourced by .zshrc)
│ ├── systemd/user/ # Backup timers, services & portal overrides
│ ├── fastfetch/config.jsonc
│ ├── VSCodium/User/settings.json
│ ├── kdeglobals
│ └── vesktop-flags.conf # Vesktop Wayland flags
├── .local/
│ ├── bin/
│ │ ├── home-backup # Restic backup script
│ │ ├── git-identity # Git identity switcher
│ │ ├── change-wallpaper # Random wallpaper + matugen recolor
│ │ ├── reload-theme # Reload all theme components
│ │ ├── screen-record # Screen recording helper
│ │ ├── screenshot-menu # Screenshot menu
│ │ ├── toggle-notifications # Toggle swaync
│ │ ├── toggle-showkeys # Toggle key display overlay
│ │ ├── toggle-topbar # Toggle waybar visibility
│ │ ├── knob-daemon # Hardware knob input daemon
│ │ ├── timer # Timer utility
│ │ └── weather-fullscreen # Weather display
│ └── share/applications/
│ └── zen.desktop # Zen Browser with --no-remote
├── .vim/
│ ├── colors/kanagawa-dragon.vim
│ └── config/ # Modular vim config
├── .vimrc
├── .zshrc
├── Makefile # Quick stow commands
├── system/
│ └── greetd/ # Session manager configs (copied to /etc)
│ ├── config.toml
│ ├── hyprland.conf
│ └── regreet.toml
├── scripts/
│ ├── install.sh # Bootstrap script (packages, stow, system)
│ └── projects.conf # Linked projects to clone/update
├── screenshots/
│ └── wallpaper.jpg # Default wallpaper for greeter
└── .stow-local-ignore
| Bind | Action |
|---|---|
ALT + T |
Terminal (kitty) |
ALT + D |
App launcher (rofi) |
ALT + E |
File manager (thunar) |
ALT + C |
Kill window |
ALT + F |
Fullscreen |
ALT + V |
Toggle floating |
ALT + W |
Toggle tabbed group |
ALT + H |
Toggle split direction |
ALT + L |
Lock screen |
ALT + R |
Resize mode (arrows, Escape to exit) |
ALT + B |
Random wallpaper + recolor |
ALT + N |
Toggle notifications |
ALT + A |
Toggle top bar |
ALT + SHIFT + L |
Lock session |
ALT + SHIFT + V |
Clipboard history (rofi) |
ALT + SHIFT + S |
Screenshot region → clipboard |
ALT + SHIFT + K |
Toggle key display overlay |
ALT + SHIFT + M |
Exit Hyprland |
ALT + arrows |
Move focus |
ALT + SHIFT + arrows |
Move window |
ALT + TAB / SHIFT+TAB |
Cycle group tabs |
ALT + 1-0 |
Switch workspace |
ALT + SHIFT + 1-0 |
Move window to workspace |
Print |
Screenshot region → clipboard |
SHIFT + Print |
Screenshot current output |
ALT + Print |
Screenshot current window |
Automated home directory backup using restic + rclone to kDrive (Infomaniak).
home-backup backup— incremental backuphome-backup prune— retention: 7 daily, 4 weekly, 6 monthlyhome-backup restore <id>— restore a snapshot- Secrets via Bitwarden Secrets Manager (BWS) — never stored on disk
- Systemd timers: daily backup, weekly prune, monthly integrity check
The install script can automatically clone and set up external projects alongside the dotenv. This is configured in scripts/projects.conf:
# Format: git_repo_url install_command (optional)
git@github.com:Dxsk/git-identity-manager.git install -m755 git-identity.sh ~/.local/bin/git-identity
git@github.com:Dxsk/mtd.git uv pip install -e .
Each line is a git repo to clone into the same parent directory as the dotenv. The optional install command runs from the project directory after clone/pull.
Currently linked:
| Project | Description | Install |
|---|---|---|
| git-identity-manager | Switch git identities per-repo with fzf | Copies script to ~/.local/bin |
| mtd | Markdown to Documents converter | Python editable install via uv |
To add your own project, just append a line to scripts/projects.conf:
git@github.com:user/repo.git optional_install_command
To remove a project, delete or comment out the line. Projects are only cloned/updated, never deleted — you manage that yourself.
On a fresh machine, install.sh clones everything. On subsequent runs, it pulls updates and re-runs install commands.