Skip to content

Repository files navigation

TuxKit

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.

Components

  • 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 future tuxkitd service.

Build

cmake -S tuxkit -B build/tuxkit
cmake --build build/tuxkit
ctest --test-dir build/tuxkit --output-on-failure

Linux root builds also include TuxKit by default:

cmake -S . -B build-linux
cmake --build build-linux --target tuxkitctl

CLI

tuxkitctl detect
tuxkitctl capabilities
tuxkitctl status
tuxkitctl set --image ~/Pictures/wallpaper.png --fit fill

Required Linux Stack

  • C++20 compiler and CMake 3.21+ for libtuxkit.
  • GLib/GIO gsettings for 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 Integration Model

Wallzer should talk to TuxKit through the public C++ API or the future D-Bus service:

  1. Detect the desktop.
  2. Read capabilities.
  3. Apply static images directly when possible.
  4. Route live/video/interactive wallpapers through tuxkitd.
  5. Let the GNOME extension own the compositor layer on Wayland.

This keeps Wallzer cross-platform and keeps Linux-specific behavior inside TuxKit.

Consuming From CMake

After installing TuxKit:

find_package(TuxKit CONFIG REQUIRED)
target_link_libraries(my_app PRIVATE TuxKit::tuxkit)

About

The open source library that powers Wallzer on Linux!

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages