# punktfunk host config for a Fedora/Ubuntu KDE Plasma appliance (kwin backend).
#
# APPLIANCE-ONLY: this file deliberately PINS the backend (PUNKTFUNK_COMPOSITOR) and the session
# env (WAYLAND_DISPLAY/XDG_CURRENT_DESKTOP) at the dedicated headless KWin session — which also
# turns OFF the host's live-session auto-detection and Desktop<->Game following. On a normal
# desktop (or any box that switches to Steam Game Mode) do NOT use this file; start from
# host.env.example instead, whose defaults auto-detect and follow the live session.
#
# Copy to ~/.config/punktfunk/host.env. Pairs with punktfunk-kde-session.service, which brings
# up a headless `kwin --virtual` on wayland-kde (with KWIN_WAYLAND_NO_PERMISSION_CHECKS=1 so the
# host can bind KWin's privileged zkde_screencast protocol — an interactive Plasma session will
# NOT hand that protocol to an external client). The host streams a per-client virtual output
# from that session, captured zero-copy (dmabuf -> CUDA -> NVENC) on NVIDIA.
WAYLAND_DISPLAY=wayland-kde
XDG_CURRENT_DESKTOP=KDE
PUNKTFUNK_COMPOSITOR=kwin
PUNKTFUNK_VIDEO_SOURCE=virtual
# GPU zero-copy (dmabuf → CUDA → NVENC) is ON by default; auto-falls back to CPU. Set =0 to force CPU.
PUNKTFUNK_INPUT_BACKEND=libei
# UDP Generic Segmentation Offload on the send path: coalesce a frame's equal-size packets into
# kernel super-buffers (one sendmsg per ~64 packets instead of one per packet) — the dominant
# lever above ~1 Gbps, where per-packet send syscalls/pps become the host bottleneck. Safe: it
# auto-falls back to sendmmsg on any kernel/path that rejects UDP_SEGMENT. Set PUNKTFUNK_GSO=0 to
# force it off if a NIC/middlebox mishandles GSO segments.
PUNKTFUNK_GSO=1
# Make the per-session streamed output the SOLE desktop, so plasmashell + windows render on it
# rather than on the headless session's `kwin --virtual` bootstrap output (without this the client
# sees only the wallpaper of an empty extended output). KWin re-homes the desktop; the bootstrap is
# re-enabled on teardown.
PUNKTFUNK_KWIN_VIRTUAL_PRIMARY=1
