ov-selkies/skills/sway-browser-vnc/SKILL.md
Minimal Sway desktop with VNC remote access and Chrome browser. Use when working with VNC desktop containers or testing the sway-desktop-vnc composition.
npx skillsauth add overthinkos/overthink-plugins sway-browser-vncInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Minimal Sway desktop with VNC (wayvnc on port 5900) and Chrome (CDP on port 9222).
| Property | Value | |----------|-------| | Base | fedora | | Layers | agent-forwarding, sway-desktop-vnc, dbus, ov | | Ports | 5900, 9222, 9224 |
ov image build sway-browser-vnc
ov start sway-browser-vnc
ov status sway-browser-vnc # Shows all probes: supervisord, cdp, dbus, ov, sway, vnc, wl
ov eval vnc status sway-browser-vnc
ov eval wl screenshot sway-browser-vnc screenshot.png
This image includes dbus and ov layers, enabling:
ov eval dbus notify — native Go D-Bus notifications via in-container ov binaryov eval dbus list/call/introspect — full D-Bus interactionov cmd — single command execution with desktop notification on completionov tmux cmd — tmux command sending with notificationov status — supervisord, dbus, and ov probesov eval dbus notify sway-browser-vnc "Build Complete" "Image built successfully"
ov cmd sway-browser-vnc "make test" # Notifies on completion
ov eval dbus list sway-browser-vnc # List all D-Bus services
The notification daemon (swaync) is included via the sway-desktop metalayer.
Fullscreen overlays for recording (via wl-overlay, included in sway-desktop):
ov eval wl overlay show sway-browser-vnc --type text --text "INTRO" --name title
ov eval wl overlay show sway-browser-vnc --type lower-third --text "Speaker" --subtitle "Role" --name lt
ov eval wl overlay show sway-browser-vnc --type countdown --seconds 3 --name cd
ov eval wl overlay show sway-browser-vnc --type highlight --region "430,290,510,50" --name hl
ov eval wl overlay show sway-browser-vnc --type fade --color black --name outro
ov eval wl overlay hide sway-browser-vnc --all
All overlay types render with true RGBA compositor transparency. See /ov-advanced:wl-overlay for the full recording workflow.
Desktop video recording via wf-recorder (included in sway-desktop):
ov eval record start sway-browser-vnc -n demo --mode desktop
# ... interact ...
ov eval record stop sway-browser-vnc -n demo -o demo.mp4
sway-browser-vnc can act as a test client for selkies-desktop, simulating how a real user would connect via browser:
# Both containers must be running on the ov bridge network
ov start sway-browser-vnc
ov start selkies-desktop
# Open selkies URL in sway-browser-vnc's Chrome
ov eval cdp open sway-browser-vnc "https://ov-selkies-desktop:3000"
# Interact with the remote desktop:
# Mouse: CDP Input.dispatchMouseEvent on the Selkies tab (with ~0.82x coordinate scaling)
# Keyboard: ov eval vnc type sway-browser-vnc "text" (passthrough via SPA's overlayInput)
# Screenshots: ov eval vnc screenshot sway-browser-vnc (shows full client desktop with stream)
# ov eval cdp screenshot sway-browser-vnc $TAB (shows only the stream content)
Key limitations when using as a client:
ov eval vnc key Return or CDP Browser.grantPermissionsSee /ov-selkies:selkies-desktop for detailed SPA interaction documentation.
Latest ov eval live sway-browser-vnc run: 84 passed, 0 failed, 1 skipped
(chrome-devtools-mcp-port references ${HOST_PORT:9224} which isn't
mapped here — correct skip behavior).
Covers all 19 transitive layers: wayvnc (VNC), sway (compositor),
chrome-sway, xdg-portal, waybar, swaync, pavucontrol, thunar,
xfce4-terminal, pipewire, wl-screenshot-grim, wl-overlay, wf-recorder,
desktop-fonts, fastfetch, asciinema, tmux, dbus, ov. Deploy-scope: VNC
port 5900 reachable, Chrome CDP on port 9250→9222 with /json/version
200. Image-scope: sway + wayvnc both RUNNING under supervisord.
/ov-selkies:sway-desktop-vnc, /ov-selkies:sway, /ov-selkies:wayvnc,
/ov-selkies:chrome-sway, /ov-selkies:xdg-portal, /ov-foundation:dbus,
/ov-foundation:ov, /ov-foundation:agent-forwarding/ov-build:eval — declarative testing framework (parent router for ov eval cdp|wl|dbus|vnc|mcp)/ov-advanced:vnc — VNC automation on this image/ov-advanced:cdp — Chrome automation (CDP on host port 9250)/ov-advanced:wl — Wayland input/windows/clipboard (sway subgroup for compositor control)/ov-advanced:dbus — D-Bus notifications via in-container ov binary/ov-build:mcp — the image inherits 2 deploy-scope mcp: checks from the chrome-devtools-mcp layer (ping + list-tools asserting navigate_page/take_screenshot). ov eval live sway-browser-vnc --filter mcp runs them; note the port-publishing gotcha — if your deploy.yml has an explicit ports: override that predates chrome-devtools-mcp, port 9224 may not be published. See /ov-build:mcp for the fix.selkies-desktop — browser-accessible remote desktop (can be accessed from sway-browser-vnc's Chrome)/ov-build:image — image family umbrella (image: entries in overthink.yml, build/validate/inspect/list)/ov-build:build — build.yml vocabulary (distros, builders, init-systems)tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).