- The "Punktfunk" shortcut is no longer hidden: it now ships committed
artwork (grid/wide/hero/logo/icon, generated by scripts/gen-steam-art.py
— a pure-stdlib SDF renderer drawing the lens mark + a monoline
"punktfunk" wordmark) applied via SetCustomArtworkForApp /
SetShortcutIcon. Existing installs are unhidden and re-arted once per
ART_VERSION; relaunching the library entry streams to the last host.
- Updates cover the flatpak CLIENT too: check_update compares the
user-scope installed commit against its remote, applyUpdate runs
`flatpak update --user` first (awaited) and the plugin reinstall —
which reloads the panel — last; docs spell out the sudo-less --user
update ("sudo flatpak update" silently skips per-user installs).
- Fullscreen page: DialogButton stretches to 100% width in the gamepad
UI, so the Stream/Pair/Refresh/… actions filled whole rows — sized to
content + right-aligned now; the header drops its Update button (About
tab + QAM banner keep the flow) and the back button gets a real 40px
hit target.
- Settings: the disable-Steam-Input note also shows for Automatic — on a
Deck that now forwards the built-in controller as a Steam Deck pad
(paddles/trackpads/gyro), which needs Steam Input off for the shortcut.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6.0 KiB
title, description
| title | description |
|---|---|
| Steam Deck (Decky) | Install the punktfunk Decky plugin to discover, pair, and stream from the Steam Deck's Gaming Mode — no drop to Desktop. |
The Decky plugin adds a punktfunk panel to the Steam Deck's Quick Access Menu (the …
button), so you can find a host, pair, and start streaming without leaving Gaming Mode. It's the
couch-friendly front end for the Steam Deck — built from real Steam UI, gamepad-navigable end to end.
Under the hood the plugin doesn't decode video itself: it discovers hosts, runs the PIN pairing, and
launches the regular Linux client (the
io.unom.Punktfunk Flatpak) the way gamescope needs so it fullscreens correctly. So the Deck has two
ways to stream, and they share one client + one paired identity:
- Gaming Mode → the Decky plugin (this page).
- Desktop Mode → run the Flatpak directly, like any Linux app.
Before you start
You need three things on the Deck:
-
Decky Loader — the plugin loader. Install it from decky.xyz if you haven't already.
-
The punktfunk client Flatpak — the plugin launches it, so install it once in Desktop Mode:
flatpak install --user https://flatpak.unom.io/io.unom.Punktfunk.flatpakref(Full options: Install a Client → Steam Deck. Without it, the panel's Stream button reports
client-not-found.) -
A punktfunk host running on your LAN — see Install the Host. The Deck finds it automatically over mDNS, so nothing to configure here.
Install the plugin
The plugin is published as a ready-to-install zip on every build. You don't need the Decky CLI or a developer toolchain — just paste a URL into Decky:
-
On the Deck, open the Quick Access Menu (
…) → the plug icon (Decky) → the gear (Settings) → enable Developer Mode. -
Open the new Developer tab and choose Install Plugin from URL.
-
Paste the stable link and confirm:
https://git.unom.io/api/packages/unom/generic/punktfunk-decky/latest/punktfunk.zip
The punktfunk panel appears in the Quick Access Menu right away — no Deck restart needed.
Channels. The link above is the stable channel (moves on
vX.Y.Zreleases). For the latestmainbuild use the canary zip —…/generic/punktfunk-decky/canary/punktfunk.zip— or pin an exact version with…/punktfunk-decky/<version>/punktfunk.zip. See Release Channels.
Use it
Open the punktfunk panel from the Quick Access Menu, or Open punktfunk for the full-screen page (host list + stream settings).
- Discover — hosts on your network appear automatically (mDNS). Tap Refresh to rescan. A lock icon means the host requires pairing.
- Pair — for a locked host, arm pairing on the host (its console or web console shows a 4-digit PIN), then enter that PIN on the Deck's keypad. Pairing persists, so the next connection is silent.
- Stream — pick a host and the stream launches fullscreen in Gaming Mode (as a "Punktfunk" Steam shortcut, so gamescope focuses it — it shows up in your library with its own artwork, and relaunching it from there streams to the last host).
- Settings — resolution, refresh, bitrate, gamepad type, and mic, written to the client the plugin launches. Leave Resolution / Refresh on Native to get the Deck's own mode. With Gamepad type on Automatic the Deck's built-in controller is forwarded as a Steam Deck pad (paddles, both trackpads, gyro) — that needs Steam Input set to Off for Punktfunk (game page → ⚙ → Controller Settings), else Steam keeps those controls and only sticks + buttons reach the host.
To leave a stream: hold L1 + R1 + Start + Select for about two seconds, or close the "game" from the Steam overlay. Either ends the session and drops you straight back to Gaming Mode.
Updating
The plugin checks for updates itself — no Decky store needed. It covers both the plugin and the streaming client (they version independently), so when either has a newer build the panel shows an Update button (in the Quick Access Menu and on the full page). Tap it: the client updates in place, and if the plugin itself changed it downloads, verifies, replaces itself, and reloads — all without leaving Gaming Mode.
The plugin check follows the channel you installed from: a plugin installed from the
stable link tracks stable releases; one installed from the canary link tracks main builds.
Updating the client from the terminal? The client is a per-user Flatpak, so run
flatpak update --user io.unom.Punktfunk— withoutsudo.sudo flatpak updateonly touches the system installation and silently skips the client. (Un-sudo'dflatpak updateupdates both scopes, so it's the safe default.)
If the plugin Update button never appears (an older Decky Loader, or no network), update the plugin manually: Decky → Developer → Install Plugin from URL, and paste the same channel link again. Decky replaces the installed copy in place.
Troubleshooting
| Symptom | Fix |
|---|---|
Stream shows client-not-found |
Install the client Flatpak in Desktop Mode (see Before you start). |
| No hosts listed | Make sure the host is running and on the same LAN; the Deck needs avahi (shipped on SteamOS). Tap Refresh. |
| Pairing fails / "not armed" | The PIN is shown only after you arm pairing on the host. Arm it, then enter the PIN within the window. |
| Stream launches but doesn't focus | Start it from the panel (not by launching the Flatpak by hand) so Steam/gamescope focuses it. |
The plugin source lives in
clients/decky.