Arch Linux · Hyprland · Matugen — dynamic wallpaper-based theming
A minimal, dynamic rice for Arch Linux using Hyprland as the compositor. Colors are generated automatically from any wallpaper via Matugen — change your wallpaper and every app recolors itself to match.
Built on top of Omarchy with custom configs layered over the defaults.
Stack:
- WM: Hyprland (Wayland)
- Bar: Waybar (glassmorphic floating islands)
- Terminal: Ghostty
- Shell: Zsh + Starship prompt
- Theming: Matugen (Material You color extraction)
- Notifications: SwayNC
- Launcher: Walker
- Visualizer: Cava
- System monitor: btop
- Fetch: Fastfetch
Install everything with:
yay -S hyprland waybar ghostty matugen starship zsh lsd zoxide fzf \
cava btop wl-screenrec walker swaync stow \
ttf-firacode-nerd hyprlock hypridle hyprsunset \
xdg-desktop-portal-hyprland uwsmgit clone https://github.com/codetesla51/uthman_dotfiles.git ~/dotfiles
cd ~/dotfiles
chmod +x install.sh
./install.shThe installer will:
- Check for missing dependencies (warns, does not exit)
- Create
~/.config/theme/current/and~/.config/theme/themes/snow_black/ - Copy fallback colors so the rice works immediately
- Create integration symlinks for btop and cava themes
- Back up any existing config files that would conflict, then symlink everything via GNU Stow
- Optionally run
matugento generate colors from your wallpaper
Existing configs are automatically backed up to
~/.config-backup-<timestamp>/before stowing.
Matugen reads a wallpaper image and generates a full Material You color palette, then writes color variables to every app's config via templates.
Apply a new wallpaper and regenerate all colors:
matugen image ~/Pictures/your-wallpaper.jpgColor output locations:
~/.config/theme/current/— active colors (written by matugen)~/.config/theme/themes/snow_black/— saved snapshot of the snow_black theme~/.config/waybar/colors.css— waybar color variables (auto-updated)
Template files live in ~/.config/matugen/templates/ — one per app.
Matugen fills in {{ colors.primary.default.hex }} style variables and writes
the result to each app's config directory.
Apps themed by matugen: Waybar, Hyprlock, Ghostty, btop, Cava, Walker, SwayNC, GTK, Firefox, Chromium, Mako
~/dotfiles/
├── .config/
│ ├── ghostty/ # Terminal config
│ ├── waybar/ # Bar + scripts
│ ├── hypr/
│ │ └── hyprlock.conf # Lock screen config
│ ├── fastfetch/ # Fetch config
│ ├── cava/ # Audio visualizer
│ ├── btop/ # System monitor
│ ├── swaync/ # Notification center
│ ├── starship.toml
│ └── matugen/
│ ├── config.toml # Template paths and matugen settings
│ └── templates/ # Per-app color templates
├── .zshrc
├── Pictures/
│ └── logo.png # Fastfetch logo
├── wallpapers/ # Wallpaper collection
├── theme-fallback/ # Static snow_black colors (used before matugen runs)
├── screenshot.png
├── install.sh
└── README.md
This rice is built on top of Omarchy. Hyprland default
bindings, envs, and window rules are sourced from Omarchy's system files at
~/.local/share/omarchy/default/hypr/. If you are not using Omarchy, you will
need to supply your own hyprland.conf.
