Skip to content

Recrating the 1984 Amiga Boing Ball demo as KDE Plasma 6 live wallpaper. • Hardware-accelerated 4-layer GPU pipeline • Zero-allocation physics • 13 theme palettes & granular CRT effects.

Notifications You must be signed in to change notification settings

arcanorca/Boingwave

Repository files navigation

Boingwave (KDE Plasma 6 Live Wallpaper)




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.

// DEMO

boingboing.mp4

[Settings GUI]

Appearence Clock Performance

// CONTROLS & CONFIG

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.

// HOW IT WORKS

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.

1. Layered Drawing (The Shader Pipeline)

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.

2. Power Savings

  • 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.

// INSTALLATION

Requirements: KDE Plasma 6 + kpackagetool6 ( plasma-workspace and qt6-declarative )

KDE Store

Desktop and Wallpaper -> Get New Plugins... -> search Boingwave

Terminal (.kpackage install)

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

Git (Local Deploy)

  1. Clone the repo and enter the directory:
git clone https://github.com/arcanorca/boingwave.git
cd boingwave
  1. Build shaders and deploy:
./build_and_deploy.sh

If Plasma still shows stale QML/settings, restart the shell using plasmashell --replace & disown.

// BUILDING SHADERS (.qsb)

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

// CREDITS

  • Developer: arcanorca
  • License: GPL-3.0-or-later
  • Stack: KDE Plasma 6 | Qt 6 (QML/JS) | GLSL (.qsb via Qt RHI) | kpackagetool6

About

Recrating the 1984 Amiga Boing Ball demo as KDE Plasma 6 live wallpaper. • Hardware-accelerated 4-layer GPU pipeline • Zero-allocation physics • 13 theme palettes & granular CRT effects.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors