gpuburden

Crates.iogpuburden
lib.rsgpuburden
version0.1.0
created_at2026-01-22 19:01:17.241141+00
updated_at2026-01-22 19:01:17.241141+00
descriptionShader-based wallpapers for Wayland, burdening your GPU with fancy animations.
homepage
repositoryhttps://github.com/SamPertWasTaken/GPUBurden
max_upload_size
id2062384
size104,032
Sam (SamPertWasTaken)

documentation

README

GPU Burden

A wayland wallpaper daemon that lets you run WGSL shader code as your wallpaper, burdening your GPU with fancy animations.

https://github.com/user-attachments/assets/c9961067-5838-4748-8660-1d55ff539457

Installing

Clone the repo and install via cargo install --path .

Usage

Run the gpuburden binary like you would any other wallpaper daemon. For example with my compositor Hyprland;

exec-once=~/.cargo/bin/gpuburden

Without any configuration, gpuburden will target all monitors with a default built-in shader that looks like this;

The default shader.

To configure it manually, create the file ~/.config/gpuburden/gpuburden.toml. Create the gpuburden folder if it doesn't exist.

The file has a single array called monitors that takes in an array of objects that have the name of the target monitor, as well as the shader to run.

monitors = [
    {
        name = "DP-2",
        shader = "distorted-noise.wgsl"
    },   
    {
        name = "HDMI-A-1",
        shader = "distorted-noise.wgsl"
    },   
]

You can get the names of all your monitors via xrandr --listmonitors.

An example output of xrandr

From there, you simply need to create your wgsl shader and place it inside of that same ~/.config/gpuburden folder.

How the gpuburden folder should be laid out.

All shaders receive a FragmentInput struct at group 0 binding 0, that looks like this;

struct FragmentInput {
    screen_size: vec2<u32>,
    frame: u32,
    seed: u32
};
@group(0) @binding(0) var<uniform> fragment_input: FragmentInput;

screen_size is the x and y size of the monitor, frame is the current frame number and seed is a random number between 0 and 1,000,000.

Some example shaders, including the default shader, can be found in examples. Feel free to copy them and use them.

Credits

  • The Learn WGPU tutorial for teaching me how WGPU works.
  • The WGPU users and Wayland-rs matrix chats for helping me with a couple of issues.
  • My friend Janusz for coming up with the name for this project.
Commit count: 19

cargo fmt