When you set a new wallpaper, a chain of scripts and tools runs automatically to regenerate every color file used by the desktop. The whole process takes a few seconds — by the time the swww transition animation completes, Matugen and Wallust have already written fresh color tokens to every component’s config directory.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Noro18/linux-ricing-dotfiles/llms.txt
Use this file to discover all available pages before exploring further.
Pipeline diagram
The diagram below shows how the wallpaper image fans out through Matugen and Wallust to reach each component:Step-by-step flow
Wallpaper selection
Press Super + W to open
wallset, a Rofi-based wallpaper picker that
lets you choose an image from ~/.config/wallpapers/. After you select an
image, wallset calls wallset-backend with the chosen file path.Alternatively, press Super + Shift + R to trigger wallset-backend-startup
directly, which picks a random wallpaper from the same directory (avoiding
the last-used image) and runs the full pipeline without opening a picker.swww sets the wallpaper
wallset-backend calls swww img with the selected file, producing an
immediate visual update on the desktop. The transition is configurable — the
relevant arguments are in both ~/.local/bin/wallset-backend and
~/.local/bin/wallset-backend-startup:--transition-type, --transition-duration, or --transition-fps
in those scripts to adjust the animation to your preference.Matugen generates a Material You palette
matugen image "$FILE" reads the wallpaper, derives a Material You color
scheme, and fills every template defined in ~/.config/matugen/config.toml.
The rendered files are written to:| Output file | Used by |
|---|---|
~/.config/waybar/colors.css | Waybar |
~/.config/rofi/colors/colors-matugen.rasi | Rofi (all launchers and applets) |
~/.config/swaync/colors-swaync.css | SwayNC |
~/.config/hypr/colors/colors.conf | Hyprland |
~/.config/kitty/colors/colors.conf | Kitty (static alternative; active colors via wallust) |
~/.config/btop/themes/matugen.theme | btop |
~/.config/starship.toml | Starship shell prompt |
~/.config/gtk-3.0/colors.css | GTK 3 apps |
~/.config/gtk-4.0/colors.css | GTK 4 apps |
Wallust generates a terminal palette
wallust run "$FILE" reads the wallpaper and fills the templates defined in
~/.config/wallust/wallust.toml. The output covers the terminal and editor
layer:| Output file | Used by |
|---|---|
~/.config/waybar/colors-waybar.css | Waybar (raw palette variables) |
~/.config/swaync/colors.css | SwayNC (via the shared waybar template) |
~/.cache/wallust/colors-kitty.conf | Kitty terminal |
~/.config/rofi/colors/colors-wallust.rasi | Rofi (wallust palette variant) |
~/.cache/wallust/colors.json | VS Code / Cursor (Wallust extension) |
~/.cache/wallust/colors | VS Code / Cursor (Wallust extension, alternate format) |
~/.cache/wallust/colors_neopywal.vim | Neovim (via neopywal) |
Components reload
After both generators finish,
wallset-backend signals components to pick
up the new colors:- SwayNC reloads via
swaync-client -rs - Waybar picks up the new CSS variables on its next reload signal
- Hyprland reloads its color config via the
post_hook = 'hyprctl reload'defined inmatugen config.toml - Kitty, Rofi, and other components that read their files at launch will apply the new colors on the next time they open
Startup vs manual flow
On every login, Hyprland runswallset-backend-startup via an exec-once entry. This script builds (or validates) a cached list of wallpapers, picks a random image that differs from the last used one, runs the full pipeline, and saves the chosen path to ~/.cache/last_wallpaper so the next startup can avoid repeating it.
The manual flow — Super + W → wallset → wallset-backend — is identical except that you choose the image yourself rather than having one selected at random.
In both cases the same sequence runs: swww → Matugen → Wallust → component reload.
To learn how to change what colors are generated or to add a new component to the pipeline, see Customize the theming pipeline templates.