One-shot installer that wires up pywal to theme your entire desktop from a single command — on any desktop environment or window manager.
wall ~/Pictures/your-wallpaper.jpgThat one command sets the wallpaper, generates a palette with pywal, and re-themes your bar, launcher, terminal, panel and compositor in real time.
- Auto-installs pywal if it's missing — Arch (
yay/parufrom AUR), everything else (pipxorpip --user) - Optional awww-daemon install (AUR) when it detects a Wayland session, for animated/cross-monitor wallpapers
wallcommand (~/.local/bin/set-theme) — one alias for the whole flow- Works on any DE/WM — detects GNOME, KDE Plasma, XFCE, MATE, Cinnamon, Hyprland, Sway, River, Wayfire, i3, bspwm, awesome, or falls back to generic Wayland/X11 tools
- awww-daemon first — always checked on Wayland (auto-starts the daemon if it's installed but not running)
- Live terminal colors — pywal sequences are broadcast to every open terminal and applied to new shells
- Auto-reload — Waybar, Polybar, SwayNC, XFCE panel, KDE plasmashell, and the compositor are reloaded only if they're actually running
- Compositor borders — Hyprland window border colors are patched from the palette
- Idempotent — safe to re-run; never duplicates config lines
| App | Where it picks up the colors |
|---|---|
| Waybar | @import ~/.cache/wal/colors-waybar.css added to style.css |
| Rofi | @import ~/.cache/wal/colors-rofi-dark.rasi added to config.rasi |
| Kitty | include ~/.cache/wal/colors-kitty.conf added to kitty.conf |
| Terminals | ~/.cache/wal/sequences (ANSI escape sequences, live + on new shell) |
| Hyprland | col.active_border / col.inactive_border patched from the palette |
| SwayNC / Waybar / Polybar / XFCE panel / KDE | auto-reloaded after each wal run |
git clone https://github.com/enjo2/pywal-theme-setup.git
cd pywal-theme-setup
./pywal-theme-setup.shRun with
--no-installto configure everything without installing anything (useful if pywal is already present).
After it finishes, open a new terminal (so the shell changes take effect) and:
wall ~/Pictures/wallpaper.jpg- Checks for pywal → installs it via
yay/paru(Arch AUR) orpipx/pip --user - Optionally installs awww-daemon (AUR) when on Wayland
- Creates
~/.config/wal/templatesand~/.cache/walfor user-level pywal access - Installs the
donehook (~/.config/wal/done) — pywal calls it after every run - Installs the
wallcommand (~/.local/bin/set-theme) - Patches Waybar / Rofi / Kitty configs to import the generated colors
- Wires
.zshrc/.bashrcwith thewallalias, the PATH export, and live pywal sequences
| Environment | Wallpaper setter used |
|---|---|
| Wayland (any) | awww-daemon (preferred, auto-started) |
| Hyprland | hyprctl hyprpaper (or awww) |
| GNOME | gsettings |
| KDE Plasma | plasma-apply-wallpaperimage |
| XFCE | xfconf-query |
| MATE | gsettings |
| Cinnamon | gsettings |
| Sway / River / Wayfire | swaybg or swww |
| X11 tiling WMs (i3, bspwm, awesome…) | feh → nitrogen → hsetroot → xwallpaper |
| Fallback | pywal itself sets the wallpaper |
- Linux, Bash 4+
python3withpip/pipx(only needed if pywal isn't installed yet)- Optionally:
awww/awww-daemon,feh,swaybg,gsettings,xfconf-query… (the script uses whatever is available)
The installer creates a wall alias → ~/.local/bin/set-theme, which:
- Detects your session type (
wayland/x11) and desktop environment - Picks the right wallpaper setter for your setup (awww-daemon first)
- Keeps
hyprpaper.conf/hyprlock.confin sync (if they exist) - Runs
wal -i <image> -n -q(pywal generates the palette + itsdonehook fires) - Broadcasts the ANSI sequences to every open
/dev/pts - Generates
~/.cache/wal/colors-hyprland.confand patches Hyprland borders - Reloads whatever bar/notifier/panel/compositor is actually running
Drop your own pywal templates into ~/.config/wal/templates/ and they'll be generated on every wal run.
Want the Rofi light variant? Change the @import line in ~/.config/rofi/config.rasi to colors-rofi-light.rasi.