Distrobox icons broke after updated to Gnome 46
Issue Description
I immidiately noticed gnome got updated to version 46 after I booted my laptop one day
But another thing I also noticed is that icons from apx containers are broken, as below
Firefox and files are on host, while vscode and spotify(those 2 on right side) are from pico
Steps to Reproduce
- Update to latest orchid
- Run an app from pico
- See the desktop icon being default executable icon on panel/dock/etc.
On what version of Vanilla OS this happens?
~~22.10~~ unreleased (Orchid)
Additional Information
No response
the bug hunter is back
orbit this aint a joke
Can you try re-exporting the apps using vso export -h?
My gnome crashed as soon as I did vso export -a code
Also, this is reproducible even with new desktop entries. For example running this in the container:
sudo apt install gedit
will install gedit correctly but if you open it it doesn't have an icon.
Looks like a window tracking issue. Doesnt effect every app. Gimp, for example, shows its icon correctly. I'm guessing this can be fixed during the export process, but I havent looked at it yet.
This can be verified by opening the window and using Alt + F2 to execute lg
After a reboot i think, the problem sorted itself out in the app list, BUT the problem still persists when launching the application. This is very likely a wmclass issue. I haven't looked at the export process for apps here, but that may be something that we can fix during that process.
Any thoughts?
The export is managed by distrobox. Could be a bug in there?
I found several bugs related to this:
- Upstream GNOME bug
- distrobox issue #128
- distrobox issue #172
- distobox issue #728
- distrobox issue #1306
If I understand correctly, these are the takeaways:
- This only affects applications that run on X11 or Xwayland
- distrobox guests have different hostnames than the host so GNOME treats them as remote applications and doesn't match them to the correct application
Potential fixes:
- Edit
StartupWMClassof application, but that would require reliably applying that to.desktopentries that don't already have it - Rename the
.desktopfiles to omit the guest name - Match distrobox guests hostname to host (requires recreating all guests)
Edit: The link to the solution in the upstream bug is no longer a valid link, but the git history shows a snippet for setting the distrobox guest hostname:
distrobox create --name test --hostname "$(uname -n)" --image your-chosen-image:tag
I have confirmed that renaming the .desktop file works as a workaround. For example:
mv .local/share/applications/apx-vso-pico-org.gnome.gedit.desktop \
.local/share/applications/org.gnome.gedit.desktop
Ideally, these applications would be updated to run natively under Wayland, but this works for the time being.