Uninstalling
Remove the Punktfunk host or a client for each install method, and clear what the removal leaves behind.
Remove Punktfunk the way you installed it, then clear what stays behind if you want a clean slate.
Removal never deletes the config directory: ~/.config/punktfunk on Linux, %ProgramData%\punktfunk
for the Windows host. It holds the host's identity, paired devices, console password, host.env,
library, logs and plugins, so a reinstall picks up where you left off.
Linux hosts
The guided installer does steps 1 and 2 for apt, dnf,
pacman and the Bazzite sysext: sh install.sh --uninstall (fetch it with
curl -fsSLO https://punktfunk.unom.io/install.sh).
-
Stop the user services first. Package removal can't see the links
enablewrote in your home, and the units then fail at every login:systemctl --user disable --now punktfunk-host punktfunk-web punktfunk-scriptingAdd
punktfunk-kde-sessionif you set up the headless KDE session. -
Remove the packages and the repository. Name only the packages you installed:
How you installed Remove Ubuntu (apt) sudo apt purge punktfunk-host punktfunk-web punktfunk-scripting punktfunk-client, thensudo rm -f /etc/apt/sources.list.d/punktfunk.list /etc/apt/keyrings/punktfunk.asc && sudo apt updateFedora (dnf) sudo dnf remove punktfunk punktfunk-web punktfunk-scripting punktfunk-client, thensudo rm -f /etc/yum.repos.d/punktfunk.repoBazzite / Fedora Atomic, layered RPMs sudo rpm-ostree uninstall punktfunk punktfunk-web(whatrpm-ostree statuslists), remove/etc/yum.repos.d/punktfunk.repo, then rebootBazzite sysext See below Arch / CachyOS (pacman) sudo pacman -Rns punktfunk-host punktfunk-web punktfunk-scripting punktfunk-client, then delete the[punktfunk](or[punktfunk-canary]) section from/etc/pacman.confOmarchy punktfunk-omarchy removefirst, then as ArchSteam Deck on-device build See below NixOS See below -
Clear what stays behind — the config directory, the tray's autostart entry, the two groups the packages create, lingering and the unit drop-ins:
rm -rf ~/.config/punktfunk ~/.config/systemd/user/punktfunk-*.service.d rm -f ~/.config/autostart/io.unom.Punktfunk.Tray.desktop sudo groupdel punktfunk-update sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunk sudo loginctl disable-linger "$USER" # only if nothing else needs itDrop the
punktfunkgroup rather than keeping it: it can attach emulated USB devices. -
Close the firewall ports you opened:
Firewall Close ufw sudo ufw delete allow punktfunk-native, andpunktfunk-gamestream/punktfunk-webif you allowed themfirewalld sudo firewall-cmd --permanent --remove-service=punktfunk-native(and the other two), thensudo firewall-cmd --reloadIf the setup moved the management port next to Sunshine, also remove
47991/tcp.
On Arch you can drop the repository key too:
sudo pacman-key --delete E0CA04465C99C936E0B0C6510A317015A34DDD69.
Bazzite / Fedora Atomic (systemd-sysext)
Stop the services (step 1) before you remove the image, because the binaries leave with it:
sudo punktfunk-sysext remove
sudo rm -f /etc/modules-load.d/punktfunk.conf /etc/udev/rules.d/60-punktfunk.rulesremove deletes the image, /etc/punktfunk-sysext.conf and the gamescope session drop-in
unless you edited it. The two files above it leaves. On a Bazzite with Steam's
session manager it may also have added an SELinux module: sudo semodule -r punktfunk-ds-inhibit.
Then do steps 3 and 4.
SteamOS / Steam Deck host (on-device build)
There is no uninstall script. sh install.sh --uninstall only stops the services; do the rest by
hand, in this order.
-
Stop and remove the user services:
systemctl --user disable --now punktfunk-host punktfunk-web \ punktfunk-scripting punktfunk-rebuild-check rm -f ~/.config/systemd/user/punktfunk-*.service rm -rf ~/.config/systemd/user/punktfunk-*.service.d systemctl --user daemon-reload sudo loginctl disable-linger "$USER" # only if nothing else on the Deck needs it -
Remove the build container and the files under your home:
distrobox rm -f pf2 # the build container (~1 GB) rm -f ~/.local/bin/punktfunk-scripting ~/.local/bin/punktfunk-gamescope rm -rf ~/.local/lib/punktfunk-scripting ~/.local/share/punktfunk-scripting rm -f ~/.local/share/punktfunk/gamescope.stamp rm -f ~/.local/share/applications/io.unom.Punktfunk.Host.desktop rm -f ~/.local/bin/punktfunk-tray ~/.config/autostart/io.unom.Punktfunk.Tray.desktop rm -f ~/.local/share/applications/io.unom.Punktfunk.StartHost.desktop rm -f ~/.local/share/icons/hicolor/*/apps/punktfunk-tray*.png rm -rf ~/punktfunk # the source checkout and its buildThe container shares your home, so
~/.cargo,~/.rustupand~/.bunare there too. Delete them only if nothing else of yours uses Rust or bun. -
If you set up Reachable without logging in, turn it off under Profiles first, then remove it. The last line deletes every seat's home and the shared games folder:
sudo systemctl disable --now punktfunk-web-door punktfunk-door punktfunk-seats \ var-lib-punktfunk.mount 'var-lib-punktfunk\x2dseats.mount' sudo rm -rf /opt/punktfunk /etc/systemd/system/punktfunk-seat@.service.d sudo rm -f /etc/systemd/system/punktfunk-{seats,seat@,door,web-door,door-on@,door-off@}.service \ /etc/systemd/system/var-lib-punktfunk*.mount \ /etc/polkit-1/rules.d/49-punktfunk-door.rules \ /etc/udev/rules.d/65-punktfunk-seats.rules /etc/tmpfiles.d/punktfunk-seats.conf sudo rm -rf /home/.steamos/offload/var/lib/punktfunk /home/.steamos/offload/var/lib/punktfunk-seatsEach seat's account stays:
getent passwd | grep punktfunk-seat=lists them forsudo userdel, andsudo userdel punktfunkremoves the door's. -
Remove the root-owned tuning. Don't skip it: the keep-list entry carries these files through every SteamOS update.
sudo rm -f /etc/atomic-update.conf.d/punktfunk.conf \ /etc/udev/rules.d/60-punktfunk.rules \ /etc/modules-load.d/punktfunk.conf \ /etc/sysctl.d/99-punktfunk-net.conf \ /etc/systemd/system/user@.service.d/50-punktfunk-nice.conf sudo udevadm control --reload-rules sudo systemctl daemon-reload -
Optional:
rm -rf ~/.config/punktfunkfor a clean slate, andsudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunk. If you had no KDE RemoteDesktop grant before, the installer seeded~/.local/share/flatpak/db/kde-authorized; delete it if nothing else relies on it. Yourinputgroup membership is harmless to keep.
NixOS
Remove what you declared: the services.punktfunk.* options, punktfunk.nixosModules.default and
the punktfunk flake input. Then sudo nixos-rebuild switch. The unit, udev rules, tuning,
firewall ports and group memberships go with the generation; store paths stay until you
garbage-collect, and ~/.config/punktfunk stays regardless.
Windows host
Uninstall Punktfunk Host from Settings → Apps → Installed apps, or run
winget uninstall unom.PunktfunkHost. Both remove the service, the drivers, the scheduled tasks and
the firewall rules (full list). Left behind on purpose:
%ProgramData%\punktfunk, your config and pairings:Remove-Item -Recurse -Force "$env:ProgramData\punktfunk".- The winget source, if you added it:
winget source remove -n punktfunk(admin PowerShell). - Seat accounts,
pf_seat1topf_seat4, if you used seats. Remove their profiles under Profiles before you uninstall, or delete the accounts in Computer Management → Local Users and Groups afterwards. - VB-CABLE, if an older Punktfunk installed it. Other apps may use it; remove it with its own uninstaller (VB-Audio Virtual Cable in Installed apps).
- The old unom certificate, if you imported it by hand for release 0.28.1 or earlier. Current
releases don't need it: in
certlm.msc, delete the certificate issued to unom (thumbprintCD1EFDEEEC9743AFC38F56C5AF30C5A3009BE941) from Trusted Publishers and Trusted Root Certification Authorities.
A Punktfunk display or gamepad stays in Device Manager
An older build could leave one behind. While the host is still installed, run from an elevated prompt:
punktfunk-host driver uninstall
punktfunk-host driver uninstall --gamepad
punktfunk-host driver uninstall --audioAlready uninstalled? Install the current version and uninstall it again; its uninstaller runs all three.
Clients
Removing a client doesn't unpair it: unpair the device in the host's web console too.
| Client | Remove | Left behind |
|---|---|---|
| Linux Flatpak | flatpak uninstall --user --delete-data io.unom.Punktfunk | ~/.config/punktfunk, shared with the native client and Decky; the Flatpak remote (flatpak remotes --user, then flatpak remote-delete --user <name>) |
| Linux packages | sudo apt purge punktfunk-client, sudo dnf remove punktfunk-client or sudo pacman -Rns punktfunk-client; drop the repo as for hosts | ~/.config/punktfunk |
| Windows installer | Punktfunk in Settings → Apps → Installed apps, or & "$env:LOCALAPPDATA\Programs\Punktfunk\unins000.exe" /VERYSILENT. Portable zip: delete the folder | %APPDATA%\punktfunk |
| Windows MSIX | Get-AppxPackage unom.Punktfunk | Remove-AppxPackage | %APPDATA%\punktfunk, if present |
| macOS | Quit it and drag it from Applications to the Trash | — |
| iPhone, iPad, Apple TV | Delete the app; if you joined the beta, stop testing in TestFlight | — |
| Android, Android TV | Uninstall from Google Play or Settings → Apps; leave the testing program on the Play listing if you joined canary | — |
| Steam Deck (Decky) | Uninstall Punktfunk from Decky's plugin list (Steam Deck → Uninstalling) | The Steam shortcuts, the Steam Input template, the client and ~/.config/punktfunk |
| LG webOS TV | Remove it from the TV's launcher; the community pf-webos project handles the rest | — |
Plugins and the script runner
Plugins live in the host's config directory, so they survive host removal. Remove them first, or delete the directories afterwards:
punktfunk-host plugins list # what's installed
punktfunk-host plugins remove <name> # uninstall one
punktfunk-host plugins disable # stop and disable the runnerOn Windows run these from an elevated PowerShell. plugins remove leaves each plugin's settings and
cache in plugin-state/<plugin>/ (including API keys you entered) and the runner's plugin-token;
deleting the config directory removes them. The runner package (punktfunk-scripting) comes off
with the host packages; on Windows it goes with the host installer.
Removing the pairing, not the software
- On the host: unpair the device in the web console. It stops being trusted immediately.
- On a Linux or Windows client:
punktfunk hosts forget <host>drops one saved host;punktfunk resetdrops all of them and the stream settings but keeps the client's identity. The Linux desktop app also takespunktfunk-client --forget-host <fingerprint|host[:port]>.
See Pairing for how the two halves fit.