a2a7cf922a
_resolve_hermes_bin_for_desktop_entry returned the resolver's None outright when neither argv[0] nor PATH yielded a launcher (a cold relaunch under `python -m` with a stripped PATH), skipping the known-wrapper probe its own docstring describes. The persisted `Exec=` then flipped to the bare module form, while a DE- or terminal-launched context renders the wrapper form. Every flip rewrites ~/.local/share/applications/hermes.desktop on the next launch. gnome-shell 50.x removes a ShellApp from id_to_app on any .desktop content change without checking its state; if the app was still STARTING, the last strong reference drops and a later GC-triggered dispose trips shell-app.c's `state == STOPPED` assertion — taking the whole Wayland session down (observed crash, 50.4-1.fc44). Probe the installer's known wrapper locations on the None path too, so the entry converges on the durable wrapper wherever one exists and only falls back to the module form when none does. A missing entry being (re)created can still change the file regardless — this removes the gratuitous rewrites, not the rescan trigger itself.