sway-browser-vnc
Recipe card from the charly-selkies plugin (Images — the deployable catalog).
sway-browser-vnc
Section titled “sway-browser-vnc”Minimal Sway desktop with VNC (wayvnc on port 5900) and Chrome (CDP on port 9222).
Box Properties
Section titled “Box Properties”| Property | Value |
|---|---|
| Base | fedora |
| Candies | agent-forwarding, sway-desktop-vnc, dbus, charly |
| Ports | 5900, 9222, 9224 |
Quick Start
Section titled “Quick Start”charly box build sway-browser-vnccharly start sway-browser-vnccharly status sway-browser-vnc # Shows all probes: supervisord, cdp, dbus, charly, sway, vnc, wlcharly check live sway-browser-vnc --filter vnc # run the candy's vnc: status / screenshot stepscharly check live sway-browser-vnc --filter wl # desktop screenshot via the wl: screenshot stepD-Bus and Notification Support
Section titled “D-Bus and Notification Support”This box includes the dbus candy (D-Bus session bus) plus the charly candy, enabling:
- the
dbus:check verb (notify/list/call/introspect) — D-Bus interaction served out-of-process bycandy/plugin-dbus, driving the session bus withgdbus charly cmd— single command execution with desktop notification on completioncharly agent terminal— typed persistent TTY sessions, input, snapshots, and transcriptscharly status— supervisord, dbus, and charly probes
# author dbus: steps in the plan, run with: charly check live sway-browser-vnc --filter dbusnotify-build-done: check: a desktop notification is delivered dbus: notify context: [deploy] text: Build Complete description: Image built successfullylist-services: check: the notifications service is on the session bus dbus: list context: [deploy] stdout: contains: org.freedesktop.Notificationscharly cmd sway-browser-vnc "make test" # Notifies on completion (gdbus, host-side)The notification daemon (swaync) is included via the sway-desktop metalayer.
Overlays
Section titled “Overlays”Fullscreen overlays for recording (via wl-overlay, included in sway-desktop):
# author overlay steps in the plan, run with: charly check live sway-browser-vnc --filter wlshow-title: check: a fullscreen title card is shown wl: overlay-show context: [deploy] type: text text: INTRO name: titleshow-lower-third: check: a lower-third is shown wl: overlay-show context: [deploy] type: lower-third text: Speaker subtitle: Role name: ltshow-countdown: check: a 3-second countdown is shown wl: overlay-show context: [deploy] type: countdown seconds: 3 name: cdshow-highlight: check: a highlight region is shown wl: overlay-show context: [deploy] type: highlight region: "430,290,510,50" name: hlshow-fade: check: a fade-to-black outro is shown wl: overlay-show context: [deploy] type: fade color: black name: outrohide-all: check: all overlays are hidden wl: overlay-hide context: [deploy] all: trueAll overlay types render with true RGBA compositor transparency. See /charly-check:wl-overlay for the full recording workflow.
Recording
Section titled “Recording”Desktop video recording via wf-recorder (included in sway-desktop) is authored as
record: plan steps (the declarative verb served out-of-process by candy/plugin-record)
and run with charly check live sway-browser-vnc --filter record:
sway-rec-start: check: a desktop recording starts record: start context: [deploy] record_name: demo record_mode: desktopsway-rec-stop: check: the desktop recording is captured record: stop context: [deploy] record_name: demo artifact: demo.mp4Use as Selkies Remote Desktop Client
Section titled “Use as Selkies Remote Desktop Client”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 charly bridge networkcharly start sway-browser-vnccharly start selkies-desktop
# Open selkies URL in sway-browser-vnc's Chrome via a cdp: open step# (the cdp: verb is served out-of-process by candy/plugin-cdp):# cdp: open url: https://charly-selkies-desktop:3000# Run with: charly check live sway-browser-vnc --filter cdp
# Interact with the remote desktop:# Mouse: cdp: spa-click on the Selkies tab (with ~0.82x coordinate scaling)# Keyboard: a vnc: type step (passthrough via SPA's overlayInput)# Screenshots: a vnc: screenshot step (shows full client desktop with stream)# a cdp: screenshot step (shows only the stream content)Key limitations when using as a client:
- Super key consumed by sway (can’t trigger remote labwc keybinds like Super+e)
- Ctrl+T/W consumed by local Chrome (open/close tabs locally, not remotely)
- Clipboard permission dialog appears on first connection — dismiss with a
vnc: keystep (key: Return) or CDPBrowser.grantPermissions
See /charly-selkies:selkies-labwc for detailed SPA interaction documentation.
Test Coverage
Section titled “Test Coverage”Latest charly check 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 candies: 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, charly. Deploy-scope: VNC
port 5900 reachable, Chrome CDP on port 9250→9222 with /json/version
200. Box-scope: sway + wayvnc both RUNNING under supervisord.
Related Skills
Section titled “Related Skills”/charly-selkies:sway-desktop-vnc,/charly-selkies:sway,/charly-selkies:wayvnc,/charly-selkies:chrome-sway,/charly-selkies:xdg-portal,/charly-infrastructure:dbus-layer,/charly-tools:charly,/charly-distros:agent-forwarding/charly-check:check— declarative testing framework (parent router for the out-of-process live-container check verbswl:/cdp:/vnc:/mcp:/dbus:)/charly-check:vnc— VNC automation on this box/charly-check:cdp— Chrome automation (CDP on host port 9250)/charly-check:wl— Wayland input/windows/clipboard (sway subgroup for compositor control)/charly-check:dbus— thedbus:check verb (notifications/list/call/introspect, served out-of-process bycandy/plugin-dbus)/charly-build:charly-mcp-cmd— the box inherits 2 deploy-scopemcp:checks from thechrome-devtools-mcpcandy (ping + list-tools assertingnavigate_page/take_screenshot).charly check live sway-browser-vnc --filter mcpruns them; note the port-publishing gotcha — if yourcharly.ymlhas an explicitport:override that predateschrome-devtools-mcp, port 9224 may not be published. See/charly-build:charly-mcp-cmdfor the fix.
Related Boxes
Section titled “Related Boxes”selkies-desktop— browser-accessible remote desktop (can be accessed from sway-browser-vnc’s Chrome)
Related
Section titled “Related”/charly-image:image— image family umbrella (candy:image entries — those carryingbase:/from:— incharly.yml, build/validate/inspect/list)/charly-build:build— the embedded build vocabulary (distros, builders, init-systems)