PunktfunkPunktfunk
Clients

Clients

The Punktfunk apps for Apple devices, Linux, Windows and Android, the browser client, the Samsung TV app, the community webOS app, Moonlight, and the punktfunk command — what each does and which to pick.

Pick the app for the device you stream to. Install steps for each are on Install a Client.

Which should I use?

You're streaming to…Use
A Mac, iPhone, iPad or Apple TVThe Apple app
A Linux desktop or laptopThe Linux app
A Steam DeckThe Decky plugin in Gaming Mode, the Linux app in Desktop Mode
A Windows PCThe Windows app
An Android phone, tablet or TVThe Android app
An LG webOS TVThe community webOS app
A Samsung TVThe Samsung TV app (preview)
A browser tab, with nothing to installThe browser client (preview)
Any other deviceMoonlight
Scripts and home automationThe punktfunk command

Every Punktfunk app finds hosts on your network, pairs once and reconnects on its own, browses the host's game library, and has a controller interface for the couch. They share presets and punktfunk:// links, the in-stream keys and the settings on Client settings. The Apple, Android, Linux and Windows apps also ask which profile plays.

Apple app (Mac, iPhone, iPad, Apple TV)

One app for macOS, iOS, iPadOS and tvOS. It adds:

  • A Library tab (a sidebar row on the Mac) with a chip for each host.
  • A host page behind each card's ⓘ, with presets, pairing, power and a network speed test. On Apple TV, hold the card or press Play/Pause on it.
  • Widgets for hosts and the game library, a Live Activity while you stream, and Shortcuts actions for Siri.
  • DualSense rumble, adaptive triggers, lightbar, motion and touchpad.
  • On a foldable iPhone, a stream that follows the fold: the cover screen, the inner screen, and the upright half when it sits half open like a laptop (foldable iPhone).

Linux desktop client (GTK4)

punktfunk-client is a GTK4 app with hardware decode (Vulkan Video or VAAPI), PipeWire audio and SDL3 controllers. It adds:

  • Hosts and Library tabs, at the bottom of a narrow window. The Library has a chip for each paired host and pinned preset, and sections you arrange with Customize.
  • A host page behind each card's ⓘ: name, address, port, Wake-on-LAN MAC, presets, pairing, power and a network speed test.
  • A banner while you stream, with Disconnect.
  • Keys for the window: Keyboard Shortcuts in the menu lists them.

For the couch, open Punktfunk Console, the gamepad button in the header bar, or run punktfunk-client --browse --fullscreen. Controller-optimized UI opens it when a controller connects.

Windows desktop client

A WinUI 3 app for x64 and Arm64 with hardware decode (Vulkan Video or D3D11VA), HDR, WASAPI audio and SDL3 controllers. Punktfunk Console in the Start menu is the controller interface for a TV or HTPC, on x64; the Arm64 build has no console yet. Controller-optimized UI opens it when a controller connects.

Android app (phone + Android TV)

One app for phones, tablets and Android TV, with hardware decode, HDR10, a microphone uplink and D-pad navigation.

Plug a DualSense, DualSense Edge or DualShock 4 in by USB and allow the USB prompt: the host then gets rumble, adaptive triggers, the lightbar and gyro. Over Bluetooth the pad works as an ordinary gamepad. Settings → Controllers → DualSense / DualShock passthrough (USB) turns this off.

On a handheld with a second, smaller screen below the first (an Ayn Thor, a Retroid Pocket with the Dual Screen add-on) or a foldable half-opened like a laptop, the stream takes the top screen. The lower one shows Stats, Actions (the buttons of the quick-action dial), a Keyboard, a Trackpad and the Controller (the virtual controller) — or, with Screens, the picture itself, below or across both screens (dual-screen handhelds). Settings → Display → Second screen turns it off — for a phone on a TV — and a preset can carry that. If the lower screen stays dark while you stream, end the stream and send your logs: they record the screens your device reported.

webOS (LG TV) — community

pf-webos is a native Punktfunk app for LG TVs, built by the community. It uses the TV's hardware decoder and works with the Magic Remote. It isn't in the LG Content Store: sideload it.

Moonlight (anything else)

Any Moonlight client connects over GameStream once the host turns it on: see Connect with Moonlight. The stream is encrypted and adapts to a lossy link; the native speed test and jumbo frames are Punktfunk-app only.

Scripting: the punktfunk CLI

punktfunk is the client without a window. It ships with every Linux package and the Windows installer. Under the Flatpak, run it as flatpak run --command=punktfunk io.unom.Punktfunk.

punktfunk discover                            # hosts advertising on this network
punktfunk pair <host>[:port] --pin -          # pair this device; PIN on stdin
punktfunk hosts list --probe                  # saved hosts, each checked live
punktfunk library <host-ref> --json           # the host's games
punktfunk launch <host-ref> --game <id>       # stream, waking the host first
punktfunk profiles <host-ref>                 # who plays on the host; --pick saves one
punktfunk launch <host-ref> --as <profile>    # stream as that profile, this time only
punktfunk end-game <host-ref> --game <id>     # close a game this device launched
punktfunk open 'punktfunk://connect/<host-ref>'
punktfunk speed-test <host-ref>               # what the link carries, loss at a rate it holds
punktfunk network-check <host-ref>            # the speed test plus what the link does, by finding

A <host-ref> is a saved host's id, its name or its address. Also: hosts add, hosts forget, default-host, wake, reachable, presets list and reset. punktfunk help <command> lists a command's flags.

  • pair reads the PIN from stdin with --pin -, or asks for it on a terminal. A PIN on the command line is refused.
  • open asks before connecting unless the link names the host by its id. --yes answers for you; with no terminal and no --yes it exits 6.
  • Exit codes: 0 ok, 2 connect failed, 3 trust rejected (pair again), 4 the renderer didn't start, 5 nothing matched, 6 needs a person (pairing or an unknown host).

Older scripts can keep punktfunk-client --connect <host>:9777; on Windows, --discover and --headless --speed-test too. They don't wake a sleeping host.

On this page