ColorWall Linux is a native Linux Wallpaper Engine built with Rust, Tauri, and libmpv.
It is currently heavily work-in-progress (WIP). The architecture relies on directly interacting with Wayland compositors to render hardware-accelerated video backgrounds underneath desktop icons using the wlr-layer-shell protocol.
- Frontend: React + TypeScript (Vite) wrapped in Tauri.
- Backend IPC/Engine: Rust (Tauri commands).
- Sidecar Video Player: A standalone Rust binary (
cl-video-player) spawned by the Tauri backend. - Wayland / EGL: Uses a custom fork of
layershellevto manage the layer shell, exposing rawwl_displayandwl_surfacepointers. - Rendering: Uses
khronos-eglfor FFI OpenGL context creation, which is fed directly intolibmpv's render API for hardware video decoding. - Event Loop: Merges Wayland compositor events (configure/resizes) and
libmpvredraw ticks into a singlecalloopevent loop to avoid multithreading collisions on the EGL context.
- ✅ Basic Tauri IPC bridge and Sidecar spawning.
- ✅
layershellevfork integrated and Waylandwlr-layer-shellbackground surfaces rendering on KWin (KDE Plasma). - ✅ EGL OpenGL surface extracted from
WlSurface(viawayland-egl). - ✅
libmpvinitialization and context binding. - 🚧 IPC Socket Listener: Passing pause/play commands from the Tauri UI into the MPV render loop via Unix Domain Sockets (currently being implemented).
- 🚧 X11 / GNOME Fallback:
mutter.rsstub is currently empty. The engine only runs on compositors supportingwlr-layer-shellright now.
This project cannot be compiled or run on Windows. It contains deep native Linux C bindings and relies on Wayland protocols.
You must build and run it on a Linux machine or VM.
# Start the Tauri dev server
pnpm tauri dev