Uninstalling
Remove the Punktfunk host or client for every install method — and what each one deliberately leaves behind.
Every install method has a clean removal path — pick yours below. Each section also says what stays on the machine afterwards.
Your configuration always survives. Removing Punktfunk never deletes its config directory —
~/.config/punktfunkon Linux,%ProgramData%\punktfunkfor the Windows host. It holds the host's identity, your paired devices, the console password,host.env, the game library, logs, and plugin state — which is what lets a reinstall pick up where you left off. Each section gives the one command that clears it for a clean slate.
Jump to what you installed:
- Linux host — apt · dnf · rpm-ostree layer · Bazzite sysext · pacman · SteamOS on-device build · NixOS
- Windows host (installer or winget)
- Clients — Flatpak, Linux packages, Windows, macOS, iOS/tvOS, Android, Steam Deck, LG webOS
- Plugins and the script runner
Linux hosts
If you installed with the guided script, sh install.sh --uninstall runs this section and the
package removal for your family in one go (fetch it again with curl -fsSLO https://punktfunk.unom.io/install.sh);
what it leaves behind is the same list below.
Stop the services first
systemctl --user enable writes symlinks into your home directory that package removal can't see —
disable the units first, or they fail at every login:
systemctl --user disable --now punktfunk-host punktfunk-webAdd punktfunk-scripting if you enabled the plugin runner, and
punktfunk-kde-session if you set up the headless KDE session.
If you turned on linger so the host ran without a login, and nothing else needs it:
sudo loginctl disable-linger "$USER"Every Linux package also leaves two system groups: punktfunk-update (for
one-click updates) and punktfunk (the virtual Steam Deck pad's usbip nodes).
Drop punktfunk rather than keeping it — it can present arbitrary emulated USB hardware.
Ubuntu (apt)
sudo apt purge punktfunk-host punktfunk-web punktfunk-client punktfunk-scripting
sudo apt autoremoveName only the packages you installed — the others are reported as not installed. Then drop the
repository and its key, so apt update stops contacting it:
sudo rm -f /etc/apt/sources.list.d/punktfunk.list /etc/apt/keyrings/punktfunk.asc
sudo apt updateLeft behind: ~/.config/punktfunk and the two groups. Clear them with:
rm -rf ~/.config/punktfunk
sudo groupdel punktfunk-update
sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunkYour input group membership is harmless to keep (a stock Ubuntu group); drop it with
sudo gpasswd -d "$USER" input if you'd rather not have it. If you opened the firewall, close it
again: sudo ufw delete allow punktfunk-native (and punktfunk-gamestream / punktfunk-web if
you allowed those too). If the setup moved the management port next to Sunshine, also
sudo ufw delete allow 47991/tcp.
Fedora (dnf)
The host package is called punktfunk on RPM, not punktfunk-host:
sudo dnf remove punktfunk punktfunk-web punktfunk-client punktfunk-scripting
sudo rm -f /etc/yum.repos.d/punktfunk.repoLeft behind: ~/.config/punktfunk, the two groups, and the signing key dnf imported into the
rpm keyring when it first installed a Punktfunk package. Clear the first two with
rm -rf ~/.config/punktfunk, sudo groupdel punktfunk-update and
sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunk. The key is harmless to leave — on its
own it only marks packages from our registry as trusted, and nothing fetches them once the repo
file is gone.
On firewalld, close the ports you opened:
sudo firewall-cmd --permanent --remove-service=punktfunk-native
sudo firewall-cmd --permanent --remove-service=punktfunk-gamestream # if you opened it
sudo firewall-cmd --permanent --remove-service=punktfunk-web # if you opened it
sudo firewall-cmd --permanent --remove-port=47991/tcp # if the setup moved the mgmt port
sudo firewall-cmd --reloadFedora Atomic / Bazzite (rpm-ostree layer)
If you layered the RPMs rather than using the sysext:
sudo rpm-ostree uninstall punktfunk punktfunk-web
systemctl rebootThe change only takes effect in the new deployment, so the reboot is part of the removal. Remove
/etc/yum.repos.d/punktfunk.repo as well if you added it. ~/.config/punktfunk is untouched.
Bazzite / Fedora Atomic (systemd-sysext)
The supported Bazzite path and the tidiest one — the whole install is a single image under
/var/lib/extensions/. Stop the services before you unmerge, because once the image is gone
their binaries are gone and the units just keep failing:
systemctl --user disable --now punktfunk-host punktfunk-web
sudo punktfunk-sysext removeremove deletes the image, its version sidecar, /etc/punktfunk-sysext.conf, the tray autostart
entry, and the gamescope session drop-in unless you edited it — then prints
punktfunk sysext removed (user config in ~/.config/punktfunk is untouched).
Three things it created outside /usr stay behind:
sudo rm -f /etc/modules-load.d/punktfunk.conf /etc/udev/rules.d/60-punktfunk.rules
sudo groupdel punktfunk-update
sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunkAnd your config, if you want it gone: rm -rf ~/.config/punktfunk. See
Bazzite for the same sequence in context.
Arch / CachyOS (pacman)
sudo pacman -Rns punktfunk-host punktfunk-web punktfunk-gamescope \
punktfunk-client punktfunk-scriptingName only what you installed. -Rns also takes the dependencies nothing else needs and removes the
packages' own configuration files.
Then delete the [punktfunk] section (or [punktfunk-canary]) from /etc/pacman.conf — the two
lines you appended when you added the repo. Optionally drop the
repo's signing key from pacman's keyring:
sudo pacman-key --delete E0CA04465C99C936E0B0C6510A317015A34DDD69Left behind: ~/.config/punktfunk and the two groups — rm -rf ~/.config/punktfunk,
sudo groupdel punktfunk-update, and sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunk
clear them. On CachyOS, close the ufw rules you opened: sudo ufw delete allow punktfunk-native,
plus sudo ufw delete allow 47991/tcp if the setup moved the management port.
SteamOS / Steam Deck host (on-device build)
There is no uninstall script for this install method. The on-device build is spread across your user session and a handful of root-owned files, so stop the user services first:
systemctl --user disable --now punktfunk-host punktfunk-web \
punktfunk-scripting punktfunk-rebuild-check
rm -f ~/.config/systemd/user/punktfunk-*.service
systemctl --user daemon-reloadThen follow SteamOS (Host) → Uninstalling for the build container, the files under your home, and the root-owned tuning. Don't skip the last of those: the atomic-update keep list carries those files through every SteamOS update, so left alone they stay on the device indefinitely.
Left behind: ~/.config/punktfunk (rm -rf ~/.config/punktfunk for a clean slate), your
input and punktfunk group memberships, and — if the installer seeded it because you had none —
the KDE RemoteDesktop portal grant at ~/.local/share/flatpak/db/kde-authorized. Drop the
punktfunk group once the host is gone — nothing else on a Deck uses it:
sudo gpasswd -d "$USER" punktfunk; sudo groupdel punktfunk.
NixOS
There is nothing to uninstall imperatively — remove what you declared:
- Delete the
services.punktfunk.*options from your configuration. - Remove
punktfunk.nixosModules.defaultfrom the system's module list and thepunktfunkflake input. - Rebuild:
sudo nixos-rebuild switch.
The unit, udev rules, sysctl tuning, firewall ports and the input / punktfunk group memberships
all disappear with the generation. The store paths stay until you garbage-collect, and
~/.config/punktfunk — which the module never managed — stays regardless.
Windows host
Uninstall from Add/Remove Programs (Settings → Apps → Installed apps) → Punktfunk Host, or, if you installed with winget:
winget uninstall unom.PunktfunkHostBoth run the same uninstaller, which removes the PunktfunkHost service, the scheduled tasks, the
virtual-display and gamepad drivers and every firewall rule it added — the full inventory is on
Windows Host → Uninstalling.
Three things are left on purpose:
-
%ProgramData%\punktfunk—host.env, the host certificate and key, the management token, the console password, your paired devices and the logs. For a clean slate:Remove-Item -Recurse -Force "$env:ProgramData\punktfunk" -
VB-CABLE, if an older Punktfunk version installed it (releases used to bundle it for the microphone; current hosts use Steam's streaming drivers instead). It is a third-party VB-Audio component other apps may be using, so the Punktfunk uninstaller never touches it. Remove it with its own uninstaller —
VBCABLE_Setup_x64.exe -u -h— or the VB-Audio Virtual Cable entry in Installed apps. -
The old publisher certificate, if you imported it by hand to silence the Unknown Publisher prompt on 0.28.1 or earlier. Releases since then are signed by a publicly trusted CA and never needed it, so it is safe to drop: remove the certificate issued to unom (thumbprint
CD1EFDEEEC9743AFC38F56C5AF30C5A3009BE941) incertlm.mscunder Trusted Publishers and Trusted Root Certification Authorities. (This is not the driver certificate above, which the uninstaller does remove.)
If you registered the winget source, drop it too — in an admin PowerShell, as when registering it:
winget source remove -n punktfunkIf a Punktfunk display or gamepad survives in Device Manager — an older build could leave one behind — run the host's own cleanup from an elevated prompt (exactly what the uninstaller calls), while the host is still installed:
punktfunk-host driver uninstall
punktfunk-host driver uninstall --gamepadIf you have already uninstalled, punktfunk-host.exe went with it: install the current version
again and uninstall it — its uninstaller runs both commands for you.
See Windows Host → Install for the installer's side of the same story.
Clients
Removing a client does not tell the host to forget it. Unpair the device from the host's web console (Pairing → unpair) if you want its pairing gone as well.
Linux — Flatpak
flatpak uninstall --user --delete-data io.unom.Punktfunk--delete-data clears the Flatpak's own per-app directory. It does not clear
~/.config/punktfunk — the client keeps its identity, known hosts and settings in your real config
directory (that is what lets the Flatpak, a native package and the Decky plugin share one paired
identity). Remove it with rm -rf ~/.config/punktfunk.
The remote it was installed from also stays. Its name depends on how you installed: if you added the
repo by hand it is unom; if you installed straight from the .flatpakref — the route
Install a Client gives — Flatpak named its own origin
remote for it. List them and delete the one that served Punktfunk, if no other app uses it:
flatpak remotes --user
flatpak remote-delete --user <name>Linux — apt / dnf / pacman packages
sudo apt purge punktfunk-client # Ubuntu
sudo dnf remove punktfunk-client # Fedora
sudo pacman -Rns punktfunk-client # Arch / CachyOSThen remove the repository as described under the host sections above, if this box had no host on
it. To clear the client's own state without uninstalling — saved hosts and stream settings, keeping
the paired identity — run punktfunk reset instead.
Windows client (installer)
Uninstall Punktfunk from Settings → Apps → Installed apps (it's a per-user install, so no admin prompt), or silently:
& "$env:LOCALAPPDATA\Programs\Punktfunk\unins000.exe" /VERYSILENTThe uninstaller removes the Start-menu entries, the punktfunk:// registration, and its own PATH
entry. A portable unzip has nothing registered — just delete the folder.
Windows client (MSIX)
Get-AppxPackage unom.Punktfunk | Remove-AppxPackageThe client's saved hosts, settings and pairing identity live under %APPDATA%\punktfunk and are not
removed with the package — delete that folder for a clean slate. The publisher certificate you
imported to install the MSIX stays in Trusted People; remove it in certlm.msc if you're done
with Punktfunk on that machine.
macOS
Quit Punktfunk and drag it from Applications to the Trash. If you installed it through TestFlight instead, remove it from TestFlight.
iPhone, iPad, Apple TV
Delete the app the usual way. To leave the beta entirely, open TestFlight, select Punktfunk, and stop testing — that removes the app and its data with it.
Android / Android TV
Uninstall the app from Google Play or from Settings → Apps. That's the whole job — it's a public Play listing, so there's no tester list to leave. If you were on the invite-only canary (Internal testing) track and want off that too, say so on Discord.
Steam Deck — Decky plugin
Uninstall Punktfunk from Decky's own plugin list (Quick Access Menu → the plug icon (Decky)
→ the gear (Settings), where the installed plugins are listed). Decky's uninstall hook does
nothing beyond that — the two Steam shortcuts it created, the Steam Input template, the client it
launched and ~/.config/punktfunk all survive. The step-by-step is on
Steam Deck → Uninstalling; the client itself comes off as in
Linux — Flatpak above.
LG webOS TV
Remove the app from the TV's launcher like any other Homebrew Channel app. pf-webos
is a community project — its repository is the place for anything beyond that.
Plugins and the script runner
Plugins are installed into the host's config directory, so they survive host removal. Take them off before you uninstall the host, 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; if punktfunk-host isn't on your PATH yet, use
the full path: & "$env:ProgramFiles\punktfunk\punktfunk-host.exe" plugins list.
plugins remove takes the plugin's code out of plugins/, but nothing else. These stay in the
config directory — ~/.config/punktfunk (Linux) or %ProgramData%\punktfunk (Windows) — whether
you removed the plugins first or uninstalled the host with them still installed:
plugins/— the plugin code itself, for any plugin you did notplugins remove.plugin-state/<plugin>/— each plugin's own config and cache, including any API keys you put in a plugin'sconfig.json.plugins removedoes not touch this.plugin-token— the runner's scoped credential for the management API.
Deleting the whole config directory removes all three. The runner package itself
(punktfunk-scripting on Linux) comes off with your package manager, as in the sections above; on
Windows it is part of the host installer and goes with it.
Removing the pairing, not the software
To undo only a pairing, you don't need to uninstall anything. The two halves are separate:
- On the host — unpair the device from the web console; it stops being trusted immediately.
- On a Linux client —
punktfunk-client --forget-host <fingerprint|host[:port]>drops a saved host from that client's list. - On a Linux or Windows client — the headless
punktfunkcommand that ships with the same package does both jobs:punktfunk hosts forget <host-ref>for one host,punktfunk resetfor all of them plus the stream settings (the client keeps its identity, so a re-pair doesn't look like a brand-new device).
See Pairing for the full model.