PunktfunkPunktfunk
Clients

Client settings

Every setting a Punktfunk client stores — what it does, what it defaults to, and which of them the host can overrule.

Every setting a Punktfunk app keeps, with its default and the apps that offer it. The host's own settings are on Configuration.

Where the settings live

The apps group settings as General, Display, Input, Audio and Controllers, under Preferences on Linux and Settings elsewhere. Apple TV has no Input and gives Quick Actions its own category. The controller interface (the console) has its own Settings, with the same five plus Presets and About. On a Steam Deck the console is the only settings screen: Open Punktfunk in the Decky panel.

Advanced settings

Rows most players never change are hidden until Show advanced, the last row of General, is on. A hidden setting still applies: a category with one changed says 1 advanced setting changed, and choosing that shows them. While you edit a preset, a row it overrides shows either way.

The advanced rows are Advanced statistics, Statistics position, Statistics size, Exit hint, Reduce interface resolution, Smoothness buffer, Render scale, Video codec, Full chroma (4:4:4), 10-bit SDR, V-Sync, Follow variable refresh, Host compositor, Video decoder, GPU, Low-latency mode, Keep screen awake, Audio quality, Keep host audio playing, Echo cancellation, Forward controllers, Use controller, Guide button, Hold Select for guide, Controller haptics, Controller speaker, Steam Controller 2 passthrough and DualSense over USB.

Linux stores settings in ~/.config/punktfunk/client-gtk-settings.json, shared with the console; Windows in %APPDATA%\punktfunk\client-windows-settings.json. Changes apply to the next session.

Names below are the Linux app's. All means Linux, Windows, Mac, iPhone, iPad, Apple TV and Android. Most settings can differ per preset; the exceptions are listed below.

Video

SettingDefaultWhat it doesWhere
ResolutionNative displayThe host builds a display at exactly this size. Native display is the screen the window is on. Aspect ratio picks which sizes are listed; Custom… takes a typed width and height.All. Apple TV: Stream mode (Native, or 720p, 1080p or 4K at 60 Hz) and Custom size. Android adds Native display (safe area).
Match windowOffThe stream follows the window's size; each resize renegotiates. Fullscreen uses the screen's own mode. On a foldable iPhone that covers a fold, an unfold, a rotation and the upright half of a half-open one (foldable iPhone).Linux, Windows, Mac, iPhone, iPad, console
Refresh rateNativeThe stream's frame rate.All. Apple TV sets it with Stream mode.
BitrateAutomaticThe whole budget on the wire: video, error correction and audio. Automatic starts at 20 Mbps, adapts to the link and never drops below 2 Mbps. A fixed rate holds for the session.All. iPhone, iPad and Mac: Automatic bitrate plus a slider; elsewhere type any rate.
Render scaleNative (1×)The host renders at your resolution times this, 0.5× to 4×: pick a stop, or type any percent from 50 to 400. Your device scales the picture to the window. Above 1× is sharper and costs bandwidth.All
Picture fitFitWhen the stream's shape differs from the screen: Fit adds black bars, Crop to fill cuts the edges, Stretch to fill distorts.All. On Android 9, Crop to fill squeezes instead.
Second screenOnA dual-screen handheld's lower panel, or a foldable half open, shows the companion panel — or the picture, with Screens (dual-screen handhelds). Off keeps the stream on this screen and leaves the other to the system: for a phone on a TV. A preset can carry it.Android
Video codecAutomaticYour pick when the host can encode it, otherwise HEVC, then AV1, then H.264. PyroWave is never picked automatically.All. Apple and Android hide AV1 and PyroWave when the device can't decode them; the console marks them (unsupported).
PyroWave quality1.6 bits per pixelTakes Bitrate's place while the codec is PyroWave. The slider reads as the rate it needs at your stream's size and refresh, such as 3840×2160 at 120 Hz: 1.6 Gbit/s; higher is sharper. A warning says when this device is on Wi-Fi or its port can't carry that rate. On a weak network the stream still sends less. See Bits per pixel.Linux, Windows, Mac, iPhone, iPad, Apple TV, Android, console. Apple TV picks from a list of rates.
10-bit HDROnOff never sends HDR. On sends 10-bit HDR when the host has HDR content and can encode it. See HDR.All. Android greys it on a screen without HDR10.
Full chroma (4:4:4)OffSharper text and thin lines, at more bandwidth. Needs HEVC or PyroWave and a host that can encode it.Linux, Windows, Mac, iPhone, iPad, Apple TV
10-bit SDROffSmoother gradients without HDR, when the host has a 10-bit desktop or allows widening (see 10-bit SDR) and its encoder supports it. HDR takes over when it engages.All
PrioritizeLowest latencyLowest latency shows each frame at once. Smoothness holds a small buffer that evens out network hiccups, at that much delay.All
Smoothness bufferAutomatic (2 frames)Frames held under Smoothness, 1 to 3. Each adds about one screen refresh of delay.All
V-SyncOn (Mac: off)Off shows each frame as soon as it's ready, with tearing. A driver without a tearing mode stays tear-free.Linux, Windows, Mac
Follow variable refreshOnPrefers the driver's variable-refresh present mode where it offers one. Whether a VRR, FreeSync or G-Sync screen then follows the stream is the compositor's call: Linux desktops want the window fullscreen and focused.Linux, Windows, Mac, iPhone, iPad
Host compositorAutomaticWhich backend a Linux host uses for the virtual display. A host without it picks its own.All
Video decoder, GPUAutomaticThe decoder and graphics card this device uses. Change them only to debug; PUNKTFUNK_DECODER overrides the decoder.Linux, Windows. GPU: Windows, and Linux with more than one GPU.
Low-latency modeOnAsks the decoder and system for their low-latency paths. Turn it off if a device misbehaves.Android
Keep screen awakeOnOff, a stream keeps the screen awake only while you play: five minutes after your last key, touch or controller input, this device's own screen saver or sleep takes over.Linux, Windows, Android, Apple

Test network speed… in a host card's menu measures the link — what it carries, then loss and jitter at half of that, a rate the link holds — and suggests a bitrate (Android: Network speed test; Linux and Apple: on the host page). On the Linux and Windows session shells it also names what the link does: a host port faster than this device's, an adapter that drops the start of each burst, a small receive buffer, a link fault, a queue, Wi-Fi. There is nothing to switch on: the host paces every frame at the link rate this device measures. With PyroWave, PyroWave quality sets the rate instead of Bitrate.

Audio

SettingDefaultWhat it doesWhere
Audio channelsStereoStereo, 5.1 or 7.1. A Linux host sends real surround; a Windows host converts its current output.All
Audio qualityStandard (Opus)Lossless sends uncompressed PCM, 2.3 Mbps and up, outside the video budget. The host can refuse it: see Configuration.All. Linux and Windows offer 48 and 96 kHz in stereo; Apple and Android add 44.1, 88.2 and 176.4 kHz.
Keep host audio playingOffOff, the host goes quiet while you stream. On, its own speakers keep playing too. With several clients, one asking is enough.All
Stream microphoneOffSends this device's microphone to the host. Ctrl+Alt+Shift+V mutes it.All but Apple TV
Echo cancellationOnKeeps the host's audio, playing from your speakers, out of the microphone. Turn it off if your microphone does its own processing. See Why do I hear myself.All but Apple TV
Speaker, MicrophoneSystem defaultWhich output plays the stream and which input feeds the microphone.Linux, Windows, Mac (plus Microphone channel)

Input

Touch modes, mouse modes and the in-stream keys are explained on Input.

Controllers

SettingDefaultWhat it doesWhere
Forward controllersOnOff, this device's controllers aren't sent. Use it when a pad reaches the host another way, such as USB passthrough. On Linux and Windows, off also disables the controller exit chord.All
Controller typeAutomaticThe virtual pad the host creates; Automatic matches each controller. An Xbox pad has no gyro: for motion, pick DualSense, DualShock 4 or Steam Deck.All. Steam Controller 2: Linux, Windows, console.
Controller rumbleOnOff, controllers don't vibrate from the stream or in the menus, whatever the game sends. A DualSense's haptics follow Controller haptics; a Steam Controller 2 in passthrough follows Steam on the host.Linux, Windows, Android, Apple
Use controllerAutomatic (all controllers)Forward only the controller you pick.Linux, Windows, Apple, console
Guide buttonAutomaticWhere the guide and quick-access buttons go: Send to host or This device. Automatic keeps them on the device only in Steam Deck Gaming Mode. See the guide button.All
Hold Select for guideAutomaticHold Select about ⅓ s to press the host's guide button. A Select tap then arrives a beat late. Automatic turns it on in Gaming Mode and on iPhone, iPad and Apple TV.All
Controller hapticsOnPlays a DualSense's voice-coil haptics, over USB or Bluetooth (Android: USB). See Controller audio.Linux, Windows, Android
Controller speakerOn (Android: off)Plays the game's pad audio on a DualSense's speaker.Linux, Windows, Android
Steam Controller 2 passthroughOffPasses a Steam Controller 2 or a 2015 Steam Controller to a Linux or Windows host as itself, so its trackpads, gyro and haptics work as they do locally. Mac: USB, a dongle or Bluetooth. iPhone, iPad, Apple TV: Bluetooth. Android and the desktop clients always pass one through.Apple
DualSense over USBOnDrives a USB DualSense or DualShock 4 directly, for adaptive triggers, lightbar and gyro.Android
Rumble on this phone, Gyro from this phoneOffThe phone's own motor and gyro stand in for a clip-on pad's.Android, iPhone

Keyboard, mouse and touch

SettingDefaultWhat it doesWhere
Touch inputTrackpadTrackpad, Direct pointer, Touch passthrough or Off.Linux, Windows, iPhone, iPad, Android
Mouse inputCapture (games) (Android: Desktop)Capture locks the pointer for games; Desktop points absolutely.Linux, Windows, Mac, Android
Capture pointer for gamesOnLocks a hardware mouse for mouse-look in fullscreen.iPad
Capture system shortcutsOnWhile input is captured, Alt+Tab and the Windows key (⌘ shortcuts on a Mac) go to the host. Ctrl+Alt+Shift+Q or ⌘⎋ always releases capture. On Linux it needs KDE Plasma, GNOME or a wlroots compositor.Linux, Windows, Mac
Modifier keysMac (⌥ Alt · ⌘ Super)Windows (⌘ Alt · ⌥ Super) makes the key beside the space bar send Alt, like a PC keyboard.Mac, iPhone, iPad
Invert scroll directionOffReverses the scrolling sent to the host.All but Apple TV

Quick actions

Quick actions edits the in-stream quick-action dial on the dial itself: click or tap a button to change it, drag one onto another to swap them, and add key shortcuts. It's on every app and in the console (which edits your defaults only). On Android, Back opens quick actions (on) sets what Back does mid-stream.

Virtual controller (iPhone, iPad, Android) is under Quick actions:

SettingDefaultWhat it does
LayoutFullFull, Sticks and shoulders or D-pad and face buttons
Opacity45 %15–100 %
Scale100 %60–160 %
Edit layout—Move, resize (50–200 %) or hide each control. Wide and upright screens keep separate layouts.

Behavior

SettingDefaultWhat it doesWhere
Start inHost listLibrary opens the default host's games; Stream connects to its desktop. With several paired hosts, set one with Make default host in its menu (Apple: Default host on the host page) or punktfunk default-host.All
Auto-wake on connectOnWakes a sleeping saved host with Wake-on-LAN and waits. Turn it off for hosts over a VPN.All
Start streams fullscreenOnF11 or Alt+Enter leaves fullscreen. On Linux and a Mac, Always also keeps the app fullscreen.Linux, Windows, Mac (Linux and Mac: Fullscreen: Off, While streaming, Always)
Keep streaming in backgroundOffAudio and the connection stay live while you switch apps, for 10 minutes unless you pick another limit.iPhone, iPad, Apple TV, Android phones (Keep streaming in the background)

Interface

SettingDefaultWhat it doesWhere
Controller-optimized UIOnSwitches to the console when a controller is in use.Linux, Windows (x64), Android (not Android TV, which always uses it), Apple
Show itWith a controllerAlways keeps the console without a pad, for a docked phone or tablet.Linux, Windows (x64), Android, Apple
BackgroundVioletThe console's backdrop colour: 20 dark fields, then 16 pale ones. Eclipse is true black for OLED screens.Console; Apple TV Settings
Reduce motionOffStops the console's moving backdrop. Apple follows the system setting instead, and so do Windows and Linux desktops that report one (GNOME, KDE); the row then hides.Console on Linux, Windows, Android
Reduce interface resolutionOn for Android TV, off on phonesDraws the console at 1080p and lets the screen scale it up, for slow 4K TV boxes. The stream isn't affected.Android console
Library viewShelfHow a host's library opens.Console, Apple
Follow system themeOnThe app and console follow omarchy-theme-set. Hosts in the Omarchy menu adds your hosts to the Omarchy menu. See Omarchy.Linux on Omarchy, console

Overlay

SettingDefaultWhat it doesWhere
Statistics overlayNormalOff, Compact, Normal or Detailed: the level a stream starts at. Change it live in-stream; see Stats.All
Advanced statisticsOffOff shows the figures Moonlight's overlay also shows. On shows Punktfunk's capture-to-screen timings.All
Statistics positionTop left (Apple: top right)The overlay's corner.All
Statistics size100 %75 % to 200 %, on top of your display's scaling. The overlay only.All
Exit hintOnShows how to leave for a few seconds when a stream starts.All

Settings that are facts about your device

These describe the device you hold, so a preset can't change them and they don't show while you edit one: Video decoder, GPU, the Speaker and Microphone devices, Use controller, Auto-wake on connect, Start in, Show advanced, the Overlay rows but Statistics overlay, and the Interface rows.

Share clipboard isn't in Settings: it's per host, on the host's page or in its edit sheet. See Shared clipboard.

When the client and the host disagree

The host answers each request before your decoder and speakers are set up, so you always get what it really sends.

You ask forThe host
A resolution and refresh rateBuilds a display at exactly that mode. A host streaming a real monitor keeps that monitor's mode and your device scales. A size the encoder can't take fails the connect.
A bitrateClamps it to 500 kbps – 8 Gbps. PyroWave ignores it.
A PyroWave qualityHolds it between 0.5 and 2 bits per pixel, under its PyroWave bitrate cap. A host that doesn't read it uses its own PyroWave quality.
A codecUses it if it can encode it, otherwise HEVC, AV1, H.264 in that order.
10-bit HDRSends it only for HDR content on an encoder that can; otherwise 8-bit SDR.
4:4:4Sends it only when every requirement is met; otherwise 4:2:0.
A channel countRounds it to 2, 6 or 8.
A gamepad typeUses it; a type it can't create becomes an Xbox 360 pad.
A compositorTreats it as a hint and picks its own when that one isn't there.

On this page