kde-selkies
| Version | 2026.185.0030 |
| Repo | superproject |
A full KDE Plasma Wayland session nested inside pixelflux and streamed over selkies/WebRTC The KDE Plasma flavor PRIMITIVE for the selkies streaming desktop: runs a full KDE Plasma Wayland session (kwin_wayland + plasmashell — the shell launched explicitly on kwin’s wayland-0) NESTED inside pixelflux’s virtual compositor (wayland-1) via kde-selkies-session, so the browser stream shows Plasma. This is the KDE analogue of the labwc layer — the swappable nested-compositor seam.
Composes selkies (transport) + kde-shell (the SDDM-free Plasma session)
- pipewire (audio) — NO seat, NO SDDM, NO graphical.target. The kde-selkies-session service uses supervisord’s %(ENV_HOME)s syntax (resolved for both supervisord pods and systemd-user targets by service_render.go) and is started by a poll-for-wayland-1 service exactly like labwc — the wrapper’s socket poll IS the ordering primitive, so it runs headless as a pod with no graphical-session.target. The encoder is left UNSET so pixelflux auto-detects per host: NVENC on the NVIDIA flavor (pixelflux built un-stubbed against the cuda-arch-builder), VA-API on the AMD flavor, CPU x264 otherwise — so the SAME layer streams on every GPU config (the encoder identity is asserted per-image in the GPU check beds).
This streamed Plasma is the pixelflux virtual-framebuffer session — intentionally distinct from any SDDM/Plasma DRM session a physical monitor shows on a real GPU output (that is kde-desktop’s job).
Services
Section titled “Services”kde-selkies-session
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
run |
mkdir=${HOME}/.local/bin |
run |
copy=kde-selkies-session |
run |
strip cap_sys_nice from kwin_wayland so it execs directly as a nested compositor under the pod’s no-new-privileges |
check |
the kde-selkies-session launcher is installed and executable in the deploy user’s PATH |
check |
the launcher execs kwin_wayland DIRECTLY nested into pixelflux (–wayland-display wayland-1), not startplasma-wayland’s headless fallback |
check |
kwin_wayland has NO cap_sys_nice file capability, so the launcher can exec it directly under the pod’s no-new-privileges (the nested-compositor caps-strip) |
check |
the KWin Wayland compositor that renders the nested session into pixelflux is present |
check |
kdotool — the KWin window-automation tool that drives the wl check verb on this session — is present |
check |
the pipewire audio daemon composed for the streamed session is present |
check |
the nested KDE Plasma session reaches RUNNING under supervisord without crash-looping |
check |
the selkies web UI streams the live Plasma desktop over HTTPS on port 3000 |
agent-check |
the streamed frames show a real KWin-composited KDE Plasma desktop (panel + wallpaper), not a black frame or a wlroots session |
check |
command=sleep 20 supervisorctl status kde-selkies-session |
check |
the Plasma shell (plasmashell — panel + wallpaper) is launched on kwin’s wayland-0 and running in the streamed session |
check |
http=https://127.0.0.1:${HOST_PORT:3000}/ |