Asynchronous wallpaper-image source for shader backgrounds.
Wraps PhosphorShaders::createWallpaperProvider() to resolve the current desktop wallpaper path (Plasma / Hyprland / Sway / GNOME) and decodes the image on a worker thread via QThreadPool — a 4 K PNG decode would otherwise visibly stutter the shell.
The Plasma desktop-applets config file is watched when present so wallpaper changes from System Settings propagate automatically. Non-KDE desktops can call refresh() manually after writing a new wallpaper (e.g. through xdg-desktop-portal).
Usage from QML via PhosphorShell.wallpaper:
ShaderBackground {
useWallpaper: PhosphorShell.wallpaper.available
wallpaperTexture: PhosphorShell.wallpaper.image
}
Threading: every public method MUST be called from the GUI thread. The worker thread that decodes the image marshals back to the GUI thread via QMetaObject::invokeMethod, so consumers never see the worker's QImage directly.