Skip to content

eq-desktop/Wallder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Wallder

A live shader wallpaper engine for Wayland compositors, built on Quickshell.

Wallder renders GLSL fragment shaders as animated, full-screen wallpapers across all connected monitors


Features

  • Multi-monitor support — renders independently on every screen
  • Per-shader configuration — each shader carries a .meta sidecar file for animation parameters
  • Layer shell integration — sits at WlrLayer.Background with exclusiveZone: -1, compatible with any wlr-based compositor (Hyprland, niri, sway, etc.)
  • No compositor patches required — pure Quickshell/QML; no native code

Requirements

  • Quickshell
  • A Wayland compositor implementing the wlr-layer-shell protocol
  • Qt 6 with QtQuick and QtQuick.Effects
  • Pre-compiled .qsb shader files (see Shader Format)

Installation

Clone the repository into your Quickshell configuration directory:

git clone https://github.com/eq-desktop/wallder ~/.config/quickshell/wallder

Then launch it via Quickshell:

WALLDER_SHADER=eyes qs -c wallder

Configuration

Variable Default Description
WALLDER_SHADERS <shellDir>/shaders Path to the directory containing shaders
WALLDER_SHADER "eyes" Name of the active shader (without extension)

Shader Format

Each shader consists of two files placed in the shader directory:

<name>.qsb

A compiled Qt Shader Baker (.qsb) binary. The fragment shader receives the following uniforms:

Uniform Type Description
resolution vec2 Dimensions of the output surface in pixels
time float Animated time value, driven by NumberAnimation

A minimal shader skeleton:

#version 440

layout(location = 0) in vec2 qt_TexCoord0;
layout(location = 0) out vec4 fragColor;

layout(std140, binding = 0) uniform qt_Uniforms {
    mat4 qt_Matrix;
    float time;
    vec2 resolution;
};

void main() {
    vec2 uv = qt_TexCoord0;
    fragColor = vec4(uv, 0.5 + 0.5 * sin(time * 0.001), 1.0);
}

Compile with qsb:

qsb --glsl 100es,120,150 --hlsl 50 --msl 12 -o shaders/myshader.qsb myshader.frag

<name>.meta

A plain-text sidecar file with key: value pairs, one per line. Supported keys:

Key Description Example
duration Duration of one full animation cycle in milliseconds duration: 60000
goal End value of the time uniform per cycle goal: 200

Example .meta file:

duration: 80000
goal: 150

If no .meta file is present or a key is missing, the values from shaderConfig in shell.qml are used as fallback.


License

MIT

About

Wallpaper shader engine using Quickshell

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages