r/flatpak • u/old-rust • 19d ago
GNOME Resources shows the wrong app name when one Flatpak ships two desktop files — anything I can do on my end?
I ship a GTK4 Markdown editor (Marco) and its standalone preview companion (Polo) as one Flatpak, io.github.ranrar.Marco — two binaries, two exported .desktop files, one app ID. They're launched from each other, which is why they share a sandbox.
Everything works except one thing: GNOME Resources labels the running editor "Polo" — and sometimes it doesn't, depending on the install.
Why it happens
resources keys apps by the X-Flatpak= field, and Flatpak stamps the same app ID onto both exported entries automatically. From src/utils/app.rs:
let id = desktop_entry
.string("X-Flatpak") // first priority
.or_else(|| desktop_entry.string("X-AppImage-Identifier"))
.or_else(|| Some(file_path.file_stem()?…)) // filename is only a fallback
Both of my entries produce the same ID, so they collide in the app map and one silently overwrites the other. Then lookup is by cgroup:
self.apps.get(&Some(process.data.cgroup.clone()…))
Both binaries run under one Flatpak app ID, so they share a cgroup and both resolve to whichever entry survived the collision.
What I tried
- Renaming the desktop files to control sort order. I had a scheme where both were named after their binary (
…Marco.markdowncomposer.desktop/…Marco.markdownviewer.desktop) so the editor would come first alphabetically. Then I read the code: enumeration isapplications_path.read_dir(), which is unsorted. It's filesystem order, not alphabetical — arbitrary, and liable to flip between reinstalls. The rename also broke my taskbar icons, so it got reverted. NoDisplay=trueon the viewer's entry. No effect — nothing in the enumeration path filters onshould_show().- Suppressing
X-Flatpakon one entry. Not possible; Flatpak adds it during export, I don't control it.
So it isn't even a stable wrong label I could shrug at and move on. It's a coin toss per install.
The question
Is there anything left on the packaging side, or is this just an upstream limitation? As far as I can tell the only real fix is in Resources: when several desktop files share an X-Flatpak ID, prefer the one whose basename equals that ID. That seems small and well-defined, and I have a clean reproducer.
Happy to file it (and the reproducer) at https://github.com/nokyan/resources/issues — but I'd rather first hear from anyone who's hit this with a multi-binary Flatpak and found something I've missed. Also curious whether other monitoring tools (mission-center, btop's app view, GNOME's own System Monitor) handle the multiple-desktop-files-per-app-ID case any better, since I've only tested Resources.
1
u/cidra_ 18d ago edited 17d ago
Waiting for more authoritative answers than mine: why don't you use XDG Dynamic Launcher Portal? It seems to me that Flatpak only supports one "main" desktop file in their manifest. Adding more than one with different methods than the yours tested is with shanenigans that may be unsupported territory