-
-
Notifications
You must be signed in to change notification settings - Fork 62
THEMING_MODULES
snowarch edited this page Apr 25, 2026
·
1 revision
applycolor.sh is the theming orchestrator.
It auto-discovers modules in scripts/colors/modules/ and runs them in filename order.
This keeps the shell product understandable:
switchwall.sh- generates palette artifacts
applycolor.sh- fans those artifacts out to modules
- each module owns one integration surface
A module is a single shell file in scripts/colors/modules/.
Examples:
10-terminals.sh20-gtk-kde.sh30-editors.sh31-zed.sh40-chrome.sh50-spicetify.sh60-sddm.sh70-steam.sh80-pear-desktop.sh
Rules:
- it must source
scripts/colors/lib/module-runtime.sh - it should exit
0when its target is disabled or missing - it should only own one integration area
- it should be safe to run after any wallpaper regeneration
module-runtime.sh provides:
- XDG/config/state paths
CONFIG_FILESTATE_DIRSCRIPT_DIRconfig_bool()config_json()venv_python()log_module()
- Create
scripts/colors/modules/NN-name.sh - Source
lib/module-runtime.sh - Gate it with config and dependency checks
- Read palette artifacts from
~/.local/state/quickshell/user/generated/ - Exit cleanly when not applicable
- Do not edit
applycolor.sh
The theming core should stay small:
- palette generation belongs in
switchwall.sh+ generators - fan-out belongs in
applycolor.sh - integrations belong in modules
That split is what keeps iNiR maintainable as a Linux shell product instead of a pile of ad-hoc scripts.