Prepare, diagnose, and validate Linux GPU and Wayland environments for AUV rendering and capture through XDG Desktop Portal and PipeWire. Use when installing AUV desktop runtime dependencies, connecting from another machine over SSH, using an existing compositor or a headless wlroots/Sway session, checking hardware versus software rendering, running display.capture or Linux driver probes, exposing optional WayVNC safely, or troubleshooting blank frames and Wayland, portal, D-Bus, PipeWire, or session-environment failures.
npx skills add https://github.com/moeru-ai/auv --skill auv-wayland-rendering
Build a reproducible Linux desktop session in which AUV can observe a Wayland
display and persist capture artifacts. Treat environment validation as evidence,
not as a change to AUV's public support claim.
Keep ownership explicit: the compositor renders application clients; AUV
requests frames through the portal and records them. Do not imply that AUV
ships the compositor or a Linux overlay renderer.
compositor session, or configuring remote viewing.
capture fails, the image is blank, or hardware rendering is uncertain.
describing a result as supported. A successful live probe is
live-validated evidence for the named environment only.
Run the read-only probe in the target shell:
.agents/skills/auv-wayland-rendering/scripts/probe-wayland.sh
Add --require-gpu to make missing GPU prerequisites fatal when hardware
rendering is required. The flag does not replace compositor-log evidence.
Record:
WAYLAND_DISPLAY, XDG_RUNTIME_DIR, and the session D-Bus;/dev/dri/renderD* nodes and the renderer reported by compositorlogs or eglinfo/vulkaninfo;
Do not infer GPU rendering from the presence of a GPU or render node. Require a
renderer log or renderer-tool result. Label pixman, llvmpipe, and similar
paths as software rendering.
Prefer the existing logged-in Wayland compositor when one is available. It
already owns the seat, GPU, D-Bus activation environment, and user consent UI.
Use headless Sway when the host has no desktop session or the test must be
isolated. Start with wlroots renderer auto-selection. Force pixman only as an
explicit software fallback; doing so gives deterministic rendering but does
not validate the GPU path.
Use a nested compositor when isolation is needed inside an existing Wayland
desktop and an extra window is acceptable. Do not point AUV at one compositor
while its portal backend is attached to another.
Install or verify:
xdg-desktop-portal and the backend for that compositor;wayland-info and grim for independent diagnostics;Request authorization before changing system packages, user services, group
membership, login linger, or firewall state. Prefer distribution packages.
Use a source build or patch only after reproducing a version-specific defect
and recording the exact upstream revision and reason.
Run the compositor, portal backend, PipeWire, and AUV as the same unprivileged
user. They must agree on XDG_RUNTIME_DIR, WAYLAND_DISPLAY, and the session
bus. For a compositor started by a user service, import its generated variables
into the systemd user manager and retrieve them in SSH shells.
Use the helper to run a command with either the current environment or the
variables published by the user manager:
.agents/skills/auv-wayland-rendering/scripts/with-wayland-session.sh \
auv invoke display.list --json
Do not run the compositor or AUV as root to work around device permissions.
Fix seat, logind, container-device, or render-node access instead.
Validate in this order so each failure has one clear owner:
wayland-info or thecompositor IPC.
org.freedesktop.portal.ScreenCast interface. cargo run -p auv-driver-linux --example validate -- permissions displays
.agents/skills/auv-wayland-rendering/scripts/verify-auv-capture.sh \
--auv target/debug/auv --repeat 3
has the expected dimensions, and is not a blank or stale frame.
Repeated captures establish startup and first-frame reliability. To test
freshness, visibly change a client between two capture passes and compare their
artifacts; identical static frames do not prove that updates propagate.
The verification script checks AUV's JSON result, artifact purpose, PNG
signature, and file existence. It does not prove semantic correctness of the
rendered application; visual inspection or an app-specific assertion remains
separate.
Report all of the following:
dma-buf, shared memory, or fallback);Do not turn compilation, a portal introspection result, or a single screenshot
into a blanket Linux support claim.
Keep GPU compositor rendering, GPU-buffer transport, and correct AUV artifact
output as three separate claims. None implies the other two.
was explicitly configured.
0.0.0.0.current backend and other consumers.
durable session.
that input was delivered or that an application completed an operation.
Take moeru-ai/auv-wayland-rendering from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.