hyprwinwrap

If you use Hyprland, you should check out hyprwinwrap.

hyprwinwrap allows specific application windows to be rendered behind the desktop as pinned background layers. Matching windows are intercepted by the plugin, converted into unmanaged floating surfaces, and rendered during Hyprland’s RENDER_POST_WALLPAPER stage.

What makes it interesting is that the “wallpaper” can now be an actual running application:

• mpv video wallpapers
• cava audio visualizers
• shader demos
• OpenGL scenes
• animated dashboards
• generative art renderers
• live telemetry panels

Installation:

hyprpm update && hyprpm add https://github.com/gen3vra/hyprwinwrap && hyprpm enable hyprwinwrap

Example configuration:

plugin {
    hyprwinwrap {
        class = window-bg
        title = window-bg
        # Position of the window in a percentage
        pos_x = 0
        pos_y = 0
        # Size of the window in a percentage
        size_x = 100
        size_y = 100
    }
}


exec-once = foot --app-id=window-bg sh -c "cmatrix"

The application itself defines the window class or app-id, and hyprwinwrap simply matches against it. The plugin also supports percentage based sizing and positioning, allowing background windows to occupy arbitrary regions of the screen instead of acting only as fullscreen wallpapers.

If a program’s background is transparent, it will appear layered above your wallpaper:

exec-once = foot -o colors-dark.alpha=0.0 --app-id=window-bg sh -c "cmatrix"

https://github.com/gen3vra/hyprwinwrap


It helps me if you share this post
https://rose.dev/blog/2026/05/24/hyprwinwrap/

Published 2026-05-24 09:35:24

Transparent Lightweight GLSL Shaders for Wayland (Hypr Focused) C++

While customizing my desktop with fun little overlays using Hyprwinwrap, I thought it would be really cool to display shaders on top of my wallpaper. After trying and failing to find an existing program that would suit my needs, a new project idea was born.

  • Lightweight – nothing except the shader rendering engine and bare necessities
  • Customizable – load custom shaders and settings from disk without recompiling
  • Wayland compatible transparency – I should be able to see through the rendered window if the shader outputs an alpha below 1.0
  • Modern GLSL compatible
  • Ability to externally set window class for use with Hyprwinwrap so we can layer it on top of our desktop

My current live wallpaper setup without wayshaders:

https://motionbgs.com/solitary-reflection

And with a nice star shader:

Awesome, but maybe you want something more “interesting”.
Here’s a ShaderToy converted shader called Eon:

I realized early in the project most of the fun ShaderToy projects use layering with iChannels and more than one shader. This program uses a similar structure so it’s possible to achieve advanced effects.

Cellular automata simulation

For instance, put a file named “shader0.frag/shader0.vert” next to wayshader for a basic one shader setup. If you need multipass rendering on that one shader, simply insert uniform sampler2D u_sampler0 as a variable. u_sampler0 will then contain a reference to last frame’s buffer so you can make trails, transformations, etc.

Want another layer? Easy. Add “shader1.frag/shader1.vert” next to the program. This shader will be rendered as its own pass on top of the previous shader.

The u_sampler variables are mapped to each shader’s index; u_sampler0 is always a reference to shader0‘s buffer. shader1 has access to u_sampler1, which is a reference to its own buffer. shader2 will have access to u_sampler0, u_sampler1, and u_sampler2 (its own buffer). Supports up to 32 “channels” with the same pattern.

It also provides basic inputs in the form of u_resolution, u_time, and u_frame.

Pull requests and feedback are always welcomed.


It helps me if you share this post
https://rose.dev/blog/2026/01/30/transparent-lightweight-glsl-shaders-for-wayland-hypr-focused-c/

Published 2026-01-30 20:06:06