A recreation of the 1984 Amiga Boing Ball tech demo as a KDE Plasma 6 live wallpaper. Features customizable themes, physics modifiers, digital clock and CRT & Analog Effects.
boingboing.mp4
Settings Menu:
- Customizable Themes: Select from built-in palettes: Amiga Original, Amber, Catppuccin, Dracula, Emerald, Everforest, Gruvbox, Kii (Wii-inspired UI), Monochrome, Nord, Paper Light, Rose Pine, and Tokyo Night.
- Physics Modifiers: Presets for bounce behavior ("Jupiter", "Classic 1984", and "Moon Float"), alongside manual animation speed multipliers.
- CRT & Analog Effects: Configurable parameters for Bloom, Noise, Jitter, RGB Shifting, Scanline intensity, and Screen Warp (Curvature).
- Digital Clock: Optional time overlay integrated into the shader background layer.
Boingwave utilizes Qt/QML and Qt RHI for rendering. It relies on a zero-allocation physics loop and layered fragment shaders to reduce CPU overhead.
Rendering is separated into four distinct fragment shaders executed directly on the GPU, avoiding CPU-based rendering pipelines:
- Background (
bg.frag): Renders the 3D perspective grid mathematically, offloading spatial calculations from the CPU. - The Ball (
ball.frag): Computes sphere geometry, lighting, and shadows. The color-cycling animation is mapped directly to the sphere's screen-space coordinates. - Retro Effects (
crt.frag): Applies post-processing filters, including bloom, screen curvature distortion, and analog noise simulation. - Digital Clock (
clock.frag): An overlay rendering the system time natively within the shader pipeline.
- FPS Limit: Rendering can be capped at specific intervals (15, 25, 30, 45, or 60 FPS) to minimize CPU wake-ups (cost of waking up the KDE Plasma)
- Smart Pause: An optional toggle that pauses the wallpaper when the desktop is covered by other windows, saving system resources, optionally it can still render the clock.
Requirements: KDE Plasma 6 + kpackagetool6 ( plasma-workspace and qt6-declarative )
Desktop and Wallpaper -> Get New Plugins... -> search Boingwave
If you have downloaded the .kpackage release, you can install or upgrade it directly:
# To install:
kpackagetool6 -t Plasma/Wallpaper -i arcanorca.boingwave.kpackage
# To upgrade an existing installation:
kpackagetool6 -t Plasma/Wallpaper -u arcanorca.boingwave.kpackage- Clone the repo and enter the directory:
git clone https://github.com/arcanorca/boingwave.git
cd boingwave- Build shaders and deploy:
./build_and_deploy.shIf Plasma still shows stale QML/settings, restart the shell using plasmashell --replace & disown.
If you modify the .frag files, you must recompile them using Qt Shader Baker:
qsb --glsl "150,120" --spirv -o contents/shaders/bg.qsb contents/shaders/bg.frag
qsb --glsl "150,120" --spirv -o contents/shaders/ball.qsb contents/shaders/ball.frag
qsb --glsl "150,120" --spirv -o contents/shaders/crt.qsb contents/shaders/crt.frag
qsb --glsl "150,120" --spirv -o contents/shaders/clock.qsb contents/shaders/clock.frag- Developer: arcanorca
- License: GPL-3.0-or-later
- Stack: KDE Plasma 6 | Qt 6 (QML/JS) | GLSL (.qsb via Qt RHI) | kpackagetool6


