Record: desktop integration

Outcome

Phase 2 made AppImage desktop integration concrete and overt. The recommended best practice is documented, and every fact the desktop loads can now be traced to its source with a command.

The project now plans, installs, uninstalls, runs, and audits AppImage integration, resolves icon names and MIME defaults with their provenance, and handles a double-clicked AppImage. AppImageLauncher was removed at the owner’s request, and its AppImage MIME definitions were preserved so the new handler keeps working.

What Was Built

Area Files
Icon theme locator sources/desktop/icon_theme_locator.h, sources/desktop/icon_theme_locator.cpp
MIME association reader sources/desktop/mime_association_reader.h, sources/desktop/mime_association_reader.cpp
Integration engine sources/integration/appimage_integrator.h, sources/integration/appimage_integrator.cpp
Integration CLI sources/tools/appimage_integrate.cpp
Provenance CLI sources/tools/desktop_inspect.cpp (--explain, --icon, --mime, --theme, --why)
Install path scripts/program-install.sh, make install
Research documents/10-appimage-desktop-integration.md, documents/11-desktop-entry-parameters.md, documents/12-desktop-loading-and-provenance.md

Decisions

The AppImageLauncher Removal

This was a change to the owner’s desktop, requested by the owner.

Verification

Verified 2026-09-21 with make test from the repository root; all thirteen test scripts passed.

Test Tier Result
tests/00-skeleton.sh, 01, 02 portable pass
tests/10-desktop-entry-reader.sh portable pass
tests/12-icon-theme-locator.sh portable pass
tests/20-desktop-entry-locator.sh portable pass
tests/22-mime-association-reader.sh portable pass
tests/30-appimage-reader.sh portable pass
tests/40-squashfs-payload-reader.sh tool-gated pass for gzip, xz, zstd, uncompressed
tests/50-desktop-search-path-live.sh live-state PASS, 5 directories, 187 entries
tests/60-command-line-tools.sh integration pass
tests/70-integration-sandbox.sh tool-gated pass
tests/80-desktop-provenance.sh portable pass

Additional evidence:

Commits

Next Tasks

  1. Decide whether to migrate the five AppImageLauncher-created launchers to this tool, which would replace their broken context actions.
  2. Consider a migrate subcommand for that replacement.
  3. Decide how to discover StartupWMClass on Wayland.