BlueGit

golden-age paperdoll-renderer

design: app id paperdoll-renderer for Wayland icon mapping (Tim t998u.2)

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 6 days ago

Hash
9b7571af190ca85f9fb4d43baa94751b3349d8ed
Parent
faa9c89f
1 file changed +7 −0
design.md +7 −0
@@ -473,3 +473,10 @@ Decision (superseded and reverted per Tim t991u, see below): automatic per-body
473 473 - Below **Project laden** / **Nieuw project**, the start screen lists the last 5 opened or created projects, newest first. Clicking one opens it, the same as loading it.
474 474 - The list is stored per user as `recent.json` in the user config directory: `$XDG_CONFIG_HOME/paperdoll-renderer/` (default `~/.config/paperdoll-renderer/`), or `%APPDATA%\paperdoll-renderer\` on Windows. `PAPERDOLL_CONFIG_DIR` overrides the location. It holds absolute `character.ppd` paths, with duplicates removed. It is written atomically and only after a successful open or create.
475 475 - Projects whose `character.ppd` no longer exists stay in the list, greyed out and not clickable, with the note "niet gevonden". They drop off as newer projects are added. An unreadable or damaged list is treated as empty and is never fatal.
476
477 ## Decision 2026-11-07 (Tim t998u.2): window icon and app id under Wayland
478 - The window carries the app id `paperdoll-renderer`, set with `ViewportBuilder::with_app_id`. This equals the `.desktop` file name and `StartupWMClass=paperdoll-renderer`. On Wayland, KDE/GNOME use the xdg-shell app_id to find the desktop entry and its icon, because Wayland has no per-window icon protocol. On X11/XWayland the same value becomes WM_CLASS.
479 - The bundled puppet icon is still set with `with_icon`, for X11 and Windows.
480 - eframe is built with both the `x11` and the `wayland` backends, so a Wayland session gets a native Wayland window with that app_id.
481 - The icon only shows after the desktop entry is installed: through a package, or through the in-app file association that writes `paperdoll-renderer.desktop`.
482 - A test checks that the app id constant, the `.desktop` name and `StartupWMClass` all match.
@@ -473,3 +473,10 @@ Decision (superseded and reverted per Tim t991u, see below): automatic per-body
473- Below **Project laden** / **Nieuw project**, the start screen lists the last 5 opened or created projects, newest first. Clicking one opens it, the same as loading it.
473- Below **Project laden** / **Nieuw project**, the start screen lists the last 5 opened or created projects, newest first. Clicking one opens it, the same as loading it.
474- The list is stored per user as `recent.json` in the user config directory: `$XDG_CONFIG_HOME/paperdoll-renderer/` (default `~/.config/paperdoll-renderer/`), or `%APPDATA%\paperdoll-renderer\` on Windows. `PAPERDOLL_CONFIG_DIR` overrides the location. It holds absolute `character.ppd` paths, with duplicates removed. It is written atomically and only after a successful open or create.
474- The list is stored per user as `recent.json` in the user config directory: `$XDG_CONFIG_HOME/paperdoll-renderer/` (default `~/.config/paperdoll-renderer/`), or `%APPDATA%\paperdoll-renderer\` on Windows. `PAPERDOLL_CONFIG_DIR` overrides the location. It holds absolute `character.ppd` paths, with duplicates removed. It is written atomically and only after a successful open or create.
475- Projects whose `character.ppd` no longer exists stay in the list, greyed out and not clickable, with the note "niet gevonden". They drop off as newer projects are added. An unreadable or damaged list is treated as empty and is never fatal.
475- Projects whose `character.ppd` no longer exists stay in the list, greyed out and not clickable, with the note "niet gevonden". They drop off as newer projects are added. An unreadable or damaged list is treated as empty and is never fatal.
476
477## Decision 2026-11-07 (Tim t998u.2): window icon and app id under Wayland
478- The window carries the app id `paperdoll-renderer`, set with `ViewportBuilder::with_app_id`. This equals the `.desktop` file name and `StartupWMClass=paperdoll-renderer`. On Wayland, KDE/GNOME use the xdg-shell app_id to find the desktop entry and its icon, because Wayland has no per-window icon protocol. On X11/XWayland the same value becomes WM_CLASS.
479- The bundled puppet icon is still set with `with_icon`, for X11 and Windows.
480- eframe is built with both the `x11` and the `wayland` backends, so a Wayland session gets a native Wayland window with that app_id.
481- The icon only shows after the desktop entry is installed: through a package, or through the in-app file association that writes `paperdoll-renderer.desktop`.
482- A test checks that the app id constant, the `.desktop` name and `StartupWMClass` all match.