punktfunk-host
| Version | 2026.241.2030 |
| Repo | box/cachyos |
| Base | cachyos |
The punktfunk streaming host on the CachyOS base, with a headless Sway compositor for it to drive.
punktfunk creates its virtual display by calling swaymsg create_output, so
the compositor is not optional scenery here — without sway’s IPC socket the
host runs but can never produce a display. pod-sway supplies it (headless
wlroots, WLR_BACKENDS=headless), the punktfunk candy installs the host from
unom’s signed pacman repo, and plugin-punktfunk contributes the punktfunk:
check verb so the bed can probe and manage the running host declaratively.
Software-encoded and GPU-free by construction: the punktfunk candy’s host.env
pins PUNKTFUNK_ENCODER=software and PUNKTFUNK_ZEROCOPY=0, so this image runs
anywhere rather than only on a machine with an encoder.
The capture path
Section titled “The capture path”sway supplies the compositor, but the frames do not come out of it directly. A
session resolves to capture: Portal, so punktfunk asks xdg-desktop-portal’s
ScreenCast interface to create a virtual output and then receives frames over
PipeWire — which is why layer-xdg-portal and pod-pipewire are composed here.
They are load-bearing, not conveniences: without them the host installs, pairs
and negotiates a codec, and then fails every session at pipeline build. That
combination is unusually misleading, because every control-plane check still
passes while nothing can ever stream.
Note the streamed output is one punktfunk CREATES per session (HEADLESS-2,
-10, -16 … as sessions come and go), not the compositor’s initial output.
Content placed on HEADLESS-1 is not in the stream, and switching sway’s focus
or workspace during a session reads as a session switch and triggers
capture lost — rebuilding pipeline.
Composition
Section titled “Composition”This box composes:
@github.com/opencharly/layer-supervisord:v2026.240.0121@github.com/opencharly/pod-sway:v2026.241.2004@github.com/opencharly/layer-xdg-portal:v2026.243.1016@github.com/opencharly/pod-pipewire:v2026.243.0508@github.com/opencharly/layer-punktfunk:v2026.242.1658@github.com/opencharly/plugin-punktfunk/candy/plugin-punktfunk:v2026.243.1139