Files
punktfunk/packaging/linux/io.unom.Punktfunk.Console.desktop
enricobuehler 0e1bab019c
ci / rust-arm64 (pull_request) Successful in 1m33s
ci / web (pull_request) Successful in 1m34s
ci / docs-site (pull_request) Successful in 1m13s
ci / bun-nix (pull_request) Successful in 27s
ci / docs-drift (pull_request) Successful in 31s
nix / flake (pull_request) Successful in 10m31s
ci / rust (pull_request) Successful in 28m5s
feat(clients/linux): the console UI gets a front door, in the shell and in the app grid
The gamepad console has shipped since the arch split, but on Linux the only way
in was `punktfunk-session --browse` (or `punktfunk-client --browse`, which execs
it) on a command line — no way to find a mode. The WinUI shell has had both doors
for a while; this is the GTK half.

Three entry points, one destination:

* A gamepad button in the hosts header (`input-gaming-symbolic`), left of the
  hamburger — the same placement WinUI gives it.
* "Console UI" in the main menu, so the mode has a searchable name and not just
  a tooltip.
* `io.unom.Punktfunk.Console.desktop` — a second launcher shipped by the deb,
  rpm, arch and flatpak packagings. It is what an app-grid search finds and what
  gets added to Steam as a non-Steam game. `Exec=punktfunk-client --browse
  --fullscreen` deliberately goes through the shell binary: that argv already
  execs the session, and it is the command flatpak's Exec rewrite expects.

The in-shell launch is a `gio::Subprocess` — `wait_check_async` lands the child's
exit on the GTK main loop with no thread and no channel, releases `busy`,
refreshes the host list (the console can pair hosts), and banners a non-zero
exit. That last part is also how a session built without its `ui` feature
surfaces: it prints "--browse needs the console UI" and exits non-zero.

Which is why the Nix build does NOT install the new desktop entry — it compiles
the session `--no-default-features`, so that launcher could only ever print an
error. Noted in packaging/nix/README.md next to the existing Skia caveat.
2026-08-24 11:41:58 +02:00

15 lines
634 B
Desktop File

[Desktop Entry]
Type=Application
Name=Punktfunk Console
Comment=Controller-driven couch interface — browse hosts and stream with a gamepad
# The shell already execs `punktfunk-session --browse` for this argv, so the shortcut goes
# through the same binary the main entry uses (which is also what flatpak's Exec rewrite
# expects). A couch UI is fullscreen; the session fullscreens itself on the Deck and under
# gamescope anyway.
Exec=punktfunk-client --browse --fullscreen
Icon=io.unom.Punktfunk
Terminal=false
Categories=Network;Game;
Keywords=streaming;remote;game;gamepad;controller;couch;console;bigpicture;
StartupNotify=true