Hyprglaze (https://github.com/slastra/hyprglaze) merged with Cava (https://github.com/karlstav/cava) as a new effect. Credit to original authors.
Find a file
2026-04-28 22:18:59 -07:00
contrib Add reliability and hot-reload overhaul 2026-04-20 22:23:17 -05:00
protocols Initial release: Wayland shader wallpaper daemon for Hyprland 2026-04-19 14:17:01 -05:00
shaders remove circular 'wash' shape from cava effect, add cava demo screenshot 2026-04-28 22:15:12 -07:00
sprites Initial release: Wayland shader wallpaper daemon for Hyprland 2026-04-19 14:17:01 -05:00
src cava bar opacity and background opacity options 2026-04-28 22:05:11 -07:00
third_party/cava cava support 2026-04-28 19:11:52 -07:00
toolchain cava support 2026-04-28 19:11:52 -07:00
.gitignore gitignore: add makepkg build artifacts 2026-04-20 07:10:56 -05:00
.nojekyll Update demo assets and enable Pages serving 2026-04-22 14:55:04 -05:00
.SRCINFO PKGBUILD: add hyprland as runtime dependency 2026-04-20 07:18:12 -05:00
build.zig cava support 2026-04-28 19:11:52 -07:00
build.zig.zon cava support 2026-04-28 19:11:52 -07:00
demo.gif Update demo assets and enable Pages serving 2026-04-22 14:55:04 -05:00
demo.mp4 Replace demo.mp4 with correct video 2026-04-22 15:00:38 -05:00
demo_cava.png remove circular 'wash' shape from cava effect, add cava demo screenshot 2026-04-28 22:15:12 -07:00
demo_cava_default.png add default screenshot file 2026-04-28 22:18:59 -07:00
LICENSE Add Arch PKGBUILD, LICENSE, and system data dir fallback 2026-04-20 07:08:03 -05:00
PKGBUILD cava support 2026-04-28 19:11:52 -07:00
README.md add default cava settings screenshot 2026-04-28 22:18:13 -07:00

hyprglaze

A Wayland wallpaper daemon for Hyprland that renders GLSL fragment shaders and modular effects to the background layer, with cursor tracking, window geometry awareness, audio reactivity, and live config reload.

demo_cava_default demo_cava demo

Features

  • Layer-shell wallpaper: renders behind all windows via wlr-layer-shell
  • GLSL shaders with Shadertoy-compatible uniforms (iResolution, iTime, iMouse, iWindow)
  • Window awareness: all visible windows passed to shaders with smooth position tracking, identity-based focus
  • Audio capture: PipeWire/PulseAudio integration with auto-detected output monitor
  • 365 color schemes: Gogh terminal themes via palette uniforms, sprites auto-recolor to match
  • Modular effect system: pluggable effects with per-effect config
  • Live config reload: edit TOML, changes apply instantly via inotify (including effect switching)
  • Frame-rate independent smoothing for cursor, window geometry, and focus transitions
  • CPU particle physics: Verlet integration, tracer trails, window collision, cursor repulsion
  • Desktop buddy: animated sprite character with AI-driven behavior (Claude Haiku via Bedrock)

Effects

Effect Description
particles Verlet physics particles with tracer trails, window collision, focused window gravity
windowglow Subtle accent glow around focused window, surface tint on unfocused
cellbloom Voronoi cells shaped by window boundaries and cursor, animated drift points
concentric SDF concentric rings radiating from window edges, cursor interaction
fluid Metaball contour lines that merge organically around windows and cursor
aurora Northern lights curtains that drape and bend around windows, cursor distortion
starfield Radial starfield with audio-reactive speed, per-band star colors, beat pulses
visualizer Stereo waveform with Catmull-Rom interpolation, amplitude-driven palette colors
cava Full-screen mirrored spectrum powered by Cava's FFT/smoothing core, visible beneath transparent windows
milkdrop Feedback-loop visualizer with kaleidoscope, beat detection, FBO pipeline
buddy Animated sprite character with procedural behaviors, palette-recolored
ai-buddy AI-driven buddy with mood system, emote particles, window awareness, wall climbing
glitch Audio-reactive glitch art with RGB split, block displacement, VHS wobble, scanlines
tide Time-aware rising water line tied to wall-clock time, with falling teardrops, crater splashes, and Worthington jets
fire Palette-driven flames rise from every window's top edge; moving windows fade with a directional wipe, neighbors warp from the wake

Install (Arch Linux)

From AUR

yay -S hyprglaze-git

From source

sudo pacman -S zig wayland wayland-protocols mesa libglvnd stb libpulse fftw
zig build
zig build run

Configuration

~/.config/hypr/hyprglaze.toml:

# Effects: particles, windowglow, cellbloom, concentric, fluid, aurora,
#          starfield, visualizer, cava, milkdrop, glitch, buddy, ai-buddy, tide, fire
effect = "fluid"
theme = "Rosé Pine"

[transition]
duration = 0.25

[cursor]
smoothing = 0.85

[geometry]
smoothing = 0.85

[particles]
count = 60
damping = 0.999
pop_threshold = 50

[cava]
bars = 64
autosens = true
glow = 1.0
reflectivity = 1.0
bar_opacity = 1.0
background_opacity = 1.0
noise_reduction = 0.77
lower_cutoff_freq = 50
higher_cutoff_freq = 10000

[buddy]
scale = 2.0
sprite = "sprites/buddy.png"
ai_cooldown = 5.0
max_calls_per_minute = 6

[tide]
start_hour = 6.0      # hour at which the tide is empty
end_hour   = 24.0     # hour at which the tide is full

CLI

hyprglaze --effect fire --theme "Rosé Pine"
hyprglaze --list-effects          # list available effects
hyprglaze --list-themes           # list available themes
hyprglaze --set-theme "Nord"      # persist a theme to the config file (hot-reloads)
hyprglaze --help                  # full flag reference

From source: substitute zig build run -- for hyprglaze.

Audio Effects (visualizer, cava, milkdrop, starfield)

Audio effects capture system audio via PipeWire/PulseAudio. The output monitor is auto-detected. To specify a different sink:

[visualizer]
sink = "alsa_output.pci-0000_00_1f.3.analog-stereo"

cava uses the same sink option in its own section:

[cava]
sink = "alsa_output.pci-0000_00_1f.3.analog-stereo"

List available sinks with pactl list short sinks.

AI Buddy (AWS Bedrock)

The ai-buddy effect uses Claude Haiku via AWS Bedrock for decision-making. Create ~/.config/hypr/hyprglaze-aws.env:

AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1

Requires the aws CLI and model access enabled for us.anthropic.claude-haiku-4-5-20251001-v1:0 in Bedrock.

Shader Uniforms

Uniform Type Description
iResolution vec3 Surface dimensions
iTime float Seconds since start
iMouse vec4 Cursor position (smoothed)
iWindow vec4 Focused window rect (smoothed)
iPrevWindow vec4 Previously focused window rect, for outgoing transitions
iWindows[32] vec4[] All visible window rects
iWindowCount int Number of visible windows
iFocusedIndex int Index of the focused window in iWindows (-1 if none)
iPrevIndex int Index of the previously focused window in iWindows
iTransition float Focus change progress 0 to 1 (newly focused)
iPrevAlpha float Outgoing focus progress 1 to 0 (previously focused)
iPalette[16] vec3[] Theme color ramp
iPaletteSize int Number of palette colors
iPaletteBg/Fg vec3 Theme background/foreground
iParticles[300] vec4[] Effect data (particles, trails, buddy state)
iParticleCount int Number of active entries
iSprite sampler2D Sprite sheet texture / FBO feedback

Adding an Effect

  1. Create src/effects/myeffect.zig with a pub const Context struct (or a directory for complex effects)
  2. Implement init(), update(state), upload(shader), deinit()
  3. Register in src/effects.zig: add import, tagged union variant, init branch, and default shader path
  4. Add default shader to shaders/myeffect.frag
  5. Configure via [myeffect] section in TOML, read params with config_mod.EffectParams

The new effect is picked up by --list-effects automatically via comptime reflection on the Effect union.

Credits

License

MIT