Skip to content

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.

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.

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