Music-reactive wallpaper for Wayland
Your wallpaper,
but alive.
Keep your favourite image. Woofer makes it breathe on the bass, ripple on the beat, and drift when it's quiet.
- 0 % CPU in silence*
- ~3 % of one core with music
- 29 MB RAM
Seven ways to wake it up.
Plus drift, heat, bokeh, chrome, ribbon and pulse. All thirteen run live below.
Live, in this tab
Try it right now.
The same shaders the daemon runs, compiled by your browser. Pick an effect, start the beat, drop in your own wallpaper. Nothing leaves your machine.
What it is
A wallpaper that listens.
Your own picture
Woofer animates the wallpaper you already love: a speaker cone, a ripple, a glitch, a heat haze. Or pick a generative background.
Any layer-shell compositor
Hyprland, Sway, niri, river… Only Hyprland is tested so far, reports welcome.
Straight from PipeWire
No cava, no extra process. FFT, bass, mids, highs, kick detection and a 16-band spectrum.
Quiet when it's quiet
It draws only on frame callbacks, slows down after 2 s of silence, and pauses behind fullscreen windows.
Follows your theme
With Caelestia, the wallpaper and Material You colours are followed live.
Live control
woofer ctl preset rippleswitches on the fly. No restart.
Measured, not promised
Light enough to forget.
i7-11800H laptop, Intel UHD, 1080p, preset pulse.
Method and details.
| CPU (% of one core) | RAM (RSS) | |
|---|---|---|
| Silence | 0.48 % 0 % with --idle-fps 0 | 29 MB |
| Music, 60 fps | 3.0 % | 29 MB |
| Music, 30 fps | 1.8 % | 29 MB |
| Paused | 0.08 % | 29 MB |
About 12 MB of the RSS are the Vulkan driver and system libraries, which every Vulkan client maps. A raw Vulkan backend to go under 1 % with music is on the roadmap.
Install
Three commands to life.
From source, until packages exist (AUR planned). Needs a Wayland compositor with wlr-layer-shell, PipeWire and a Vulkan driver.
# Arch: sudo pacman -S --needed rust clang pipewire vulkan-icd-loader (+ your Vulkan driver)
git clone https://github.com/Ybucaille/woofer && cd woofer
cargo install --path daemon --locked
mkdir -p ~/.local/share/woofer && cp -r shaders ~/.local/share/woofer/
woofer --wallpaper ~/Pictures/wall.jpg --preset glitch
woofer ctl preset synthwave # switch on the fly
woofer ctl intensity 0.6
Autostart, Sway, Caelestia and every flag: README.
Make your own
One file. Your effect.
An effect is a single Shadertoy-style .glsl. The same file runs in the daemon, the Quickshell module
and the browser preview. Bass, beat, spectrum and your theme colours come in as uniforms.
// @name My Effect
// @description One line shown in the picker
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
vec2 uv = fragCoord / iResolution;
uv += (uv - 0.5) * -0.02 * uBass * uIntensity;
fragColor = vec4(wall(uv).rgb, 1.0);
}
Made by one person, for the love of it.
Woofer is free and will stay free. If it made your desktop a little nicer and you'd like to say thanks, a coffee keeps the shaders coming. There's also a small premium pack, and commissions if you'd like an effect made for you.
A star, a screenshot or an issue helps just as much.