photocraft/docs
Mawfyy 782ea69f35
fix(linux): AppImage registers its desktop entry and icon on launch (#617)
* fix(linux): AppImage registers its desktop entry and icon on launch

On Wayland the compositor resolves the dock icon from the window's app_id
(ai.storyteller.photocraft, already set) against a host-installed .desktop
file. An AppImage installs nothing, so every run showed the generic Wayland
logo (#593). The app cannot set the icon itself: winit 0.30.13 (egui 0.36.2's
pin) has an empty set_window_icon on Wayland; xdg-toplevel-icon-v1 landed on
winit's 0.31 line only.

- packaging/linux/AppRun is a script instead of a symlink: best-effort
  integration into $XDG_DATA_HOME before launch (desktop entry with Exec
  rewritten to the AppImage's path and TryExec dropped, hicolor icons
  copied), content-compared so an unchanged install costs a few cmp calls,
  refreshed when the AppImage moves, PHOTOCRAFT_NO_DESKTOP_INTEGRATION=1
  opts out, and no failure can block the launch (best-effort steps silent).
- packaging/linux/apprun-test.sh: 8-case smoke (passthrough, Exec rewrite
  with spaces, metadata preserved, idempotence, move refresh, opt-out,
  unwritable data dir, extracted AppDir). packaging-lint runs it and now
  shellchecks AppRun.
- Docs: releasing.md Linux section; README install paragraph.

Fixes #593

* AppRun: skip desktop integration when the AppImage path needs Exec escaping

A quote, backquote, dollar, backslash, percent or line break in the path would need
desktop-entry escaping (a line break could even add keys), so integration is skipped
and the app still launches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:12:00 -04:00
..
brand Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms, attribution 2026-10-04 10:06:17 -04:00
images Preferences: add an Apply button (#325) (#325) 2026-10-06 11:29:06 -04:00
architecture.md Open HEIC/HEIF photos (#355) (#372) 2026-10-07 10:20:40 -04:00
camera-raw-histogram.md Camera Raw: interactive histogram, clipping warnings and scopes (part of #215) (#407) 2026-10-07 07:40:55 -04:00
context-menu-inventory.md Start context-menu parity across canvas, paths, and document tabs (#556) 2026-10-07 07:45:26 -04:00
context-menu-parity.md Start context-menu parity across canvas, paths, and document tabs (#556) 2026-10-07 07:45:26 -04:00
contributing.md Fonts: use craft-fonts as an optional build input; move the Japanese fonts out (#353) (#353) 2026-10-06 18:21:46 -04:00
control-protocol.md Remember desktop window and panel sizes across restarts (#587) 2026-10-07 09:12:44 -04:00
development.md Open HEIC/HEIF photos (#355) (#372) 2026-10-07 10:20:40 -04:00
localization-zh-hans.md i18n: complete Simplified Chinese catalog and localize brush sections (#359) 2026-10-07 07:46:52 -04:00
localization.md Brazilian Portuguese UI translation (pt-br) (#700) 2026-10-07 16:11:38 -04:00
parity-estimate.md Vertical type (tategaki): lay out, render, edit and round-trip (#199) (#246) (#246) 2026-10-05 11:48:14 -04:00
parity.md Sandboxed WebAssembly plug-ins: photocraft-plugins (wasmi), plugin.* commands, Filter › Plug-ins (#67) 2026-10-04 16:08:28 -04:00
plugins.md Sandboxed WebAssembly plug-ins: photocraft-plugins (wasmi), plugin.* commands, Filter › Plug-ins (#67) 2026-10-04 16:08:28 -04:00
release-playbook.md Release playbook now lives in craftrules; keep a pointer 2026-10-01 13:27:12 -04:00
releasing.md fix(linux): AppImage registers its desktop entry and icon on launch (#617) 2026-10-07 16:12:00 -04:00
roadmap.md feat(i18n): add Korean and live language switching (#582) 2026-10-07 09:06:33 -04:00
scorecard.md scorecard: BUG-203 (atomic saves) is done - flip the stale rows (#203) (#687) 2026-10-07 15:49:13 -04:00
ui-design.md Add fixed UI scale steps from 75% to 300% (#611) 2026-10-07 09:11:35 -04:00