From e7c6c96e5fbcca4f055b35e1f2e49e66e1710ec4 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Tue, 21 Jul 2026 13:10:02 +0200 Subject: [PATCH] fix(presenter): set the Wayland app_id so the session window gets its icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SDL_APP_ID = io.unom.Punktfunk — compositors match it against the shipped .desktop for the window icon; without it KWin/mutter show the generic Wayland icon (field-noticed on the Deck). Linux analog of win32 AppUserModelID. Co-Authored-By: Claude Fable 5 --- crates/pf-presenter/src/run.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crates/pf-presenter/src/run.rs b/crates/pf-presenter/src/run.rs index 2f73da14..1f8a17e1 100644 --- a/crates/pf-presenter/src/run.rs +++ b/crates/pf-presenter/src/run.rs @@ -333,6 +333,11 @@ fn run_inner(mut opts: SessionOpts, mut mode: ModeCtl) -> Result // bottom-right corner (the reported bug). The menu/library is keyboard+gamepad-driven // and consumes no mouse, so nothing wanted these synthetic events anyway. sdl3::hint::set("SDL_TOUCH_MOUSE_EVENTS", "0"); + // The Wayland `app_id` (and X11 WM_CLASS) — compositors match it against + // io.unom.Punktfunk.desktop for the window/taskbar icon. Without it SDL uses a generic + // identity and the session window gets the default-Wayland icon (the Linux analog of + // the AppUserModelID adoption above). + sdl3::hint::set("SDL_APP_ID", "io.unom.Punktfunk"); let sdl = sdl3::init().context("SDL init")?; let video = sdl.video().context("SDL video")?; let events = sdl.event().context("SDL events")?;