TuxKit is Wallzer's Linux desktop integration layer. It is designed to be open sourced as its own project while remaining easy for Wallzer to vendor or link as a module.
The first backend targets GNOME because GNOME Wayland needs compositor-aware integration for live wallpapers. Static wallpapers can be applied through GNOME settings from C++; live video, GIF, web, and interactive wallpapers require a GNOME Shell extension plus a renderer process.
libtuxkit- C++20 library for environment detection, capabilities, and wallpaper requests.tuxkitctl- CLI for testing and scripting.extensions/gnome-shell/tuxkit@emagenware.com- GJS GNOME Shell extension scaffold for the desktop layer.share/dbus/com.emagenware.TuxKit.xml- D-Bus contract for a futuretuxkitdservice.
cmake -S tuxkit -B build/tuxkit
cmake --build build/tuxkit
ctest --test-dir build/tuxkit --output-on-failureLinux root builds also include TuxKit by default:
cmake -S . -B build-linux
cmake --build build-linux --target tuxkitctltuxkitctl detect
tuxkitctl capabilities
tuxkitctl status
tuxkitctl set --image ~/Pictures/wallpaper.png --fit fill- C++20 compiler and CMake 3.21+ for
libtuxkit. - GLib/GIO
gsettingsfor GNOME static wallpaper writes. - GJS for the GNOME Shell extension.
- GStreamer or libmpv for the renderer process that will decode video/GIF/audio-backed wallpapers.
- D-Bus for the stable service API between Wallzer,
tuxkitd, and the Shell extension.
Wallzer should talk to TuxKit through the public C++ API or the future D-Bus service:
- Detect the desktop.
- Read capabilities.
- Apply static images directly when possible.
- Route live/video/interactive wallpapers through
tuxkitd. - Let the GNOME extension own the compositor layer on Wayland.
This keeps Wallzer cross-platform and keeps Linux-specific behavior inside TuxKit.
After installing TuxKit:
find_package(TuxKit CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE TuxKit::tuxkit)