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

No releases published

Packages

 
 
 

Contributors