Skip to content

gst-wayland-display

Version 2026.241.2200
Repo box/github.com/opencharly/layer-gst-wayland-display:v2026.241.2202

Builds and installs the gst-wayland-display GStreamer plugin — libgstwaylanddisplaysrc.so, the waylanddisplaysrc element that IS the Wayland parent for a nested compositor. The element embeds a Smithay compositor, creates zwp_linux_dmabuf_v1 on a real DRM render node, and produces GStreamer buffers straight out of the compositor — which is what lets a nested Hyprland run with no seat, no KMS device and no DRM master.

Built from the opencharly fork at a pinned commit rather than from crates.io: the fork carries the resize sentinel fix (an unset max_size intersected to None, so a resize silently snapped to 1280x720), the xkb-layout/variant/ options element properties, and smooth-scroll axis support. Upstream has none of these.

The source is fetched at an immutable commit tarball, built with cargo, and only the resulting .so is installed — the build tree is removed in the same step. Every claim below is checkable in a disposable build-scope container: the plugin file exists, GStreamer loads it, the element is registered, and the three keymap properties the streamer sets are present.

Installed on every distro:

  • rust
  • gstreamer
  • gst-plugins-base
  • gst-plugin-va
  • wayland
  • libinput
  • libxkbcommon
  • mesa
  • clang
  • pkgconf
  • curl

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 fetch the pinned gst-wayland-display fork tarball
run build the plugin and install only the .so, then drop the build tree
check the gst-wayland-display plugin file is installed
check GStreamer loads the plugin and registers the waylanddisplaysrc element
check the fork’s keymap properties are present — the streamer sets all three
check a waylanddisplaysrc pipeline negotiates DMABuf into vapostproc and reaches PLAYING
check the render-node property is present — the element never uses a software node