I’ve uploaded a new version of the gtk-common-themes snap, and it would be helpful to get some testing feedback before we look at rolling it out to stable. It can be tested by running the following command:
sudo snap refresh --edge gtk-common-themes
And you can switch your system back again with:
sudo snap refresh --stable gtk-common-themes
This update changes the snap’s base from core18 to bare. The main reason for this change was to avoid the need to install core18 on systems that only have core20 based desktop snaps installed. We could have solved this by switching the snap to base: core20, but that would have the effect of forcing the install of core20 on systems that only have core18 based snaps installed. Using base: bare also forces the install of an extra base snap, but it is only 4KB in size rather than ~ 60 MB.
The hope is that this will also avoid these types of transition problems in the future when core22, core24, etc are inevitably released. It also means we should be able to more quickly switch to newer build environments for the snap, without worrying about forcing installation of a new base on users.
The main things I’d be interested in feedback for are:
Do you have any problems upgrading to this version of the snap?
Do any applications that plug theme data from gtk-common-themes misrender after the update? In particular, with the following themes:
Ambiance/Radiance: as we’re building on a Ubuntu 20.04 base now, there have been a few small updates to these themes.
Arc: the old source repo for this theme has been archived and does not build with Ubuntu 20.04’s sassc, so I’ve switched over to the recommended continuation. This changed the build system from autotools to meson too.
Other themes built using sassc (Yaru, etc): I wouldn’t normally expect a problem, but given the issues with Arc it is probably worth checking that none of them have been miscompiled. I don’t expect any problems for Yaru in particular, since that combination has been well tested in the main distro.
I refreshed to the edge channel while the firefox snap was running, and the next time I tried to interact with the UI (namely open the hamburger menu), firefox crashed. When it restarted (from the crash reporter dialog), the application wasn’t correctly themed (wrong colors, window buttons missing), some fonts weren’t rendered correctly (in particular the monospace font used to render code and quotes on this forum), and I saw this warning in the terminal I used to launch the app:
(firefox:10935): Gtk-WARNING **: 09:03:40.689: Could not find the icon 'window-minimize-symbolic-ltr'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
After exiting the app cleanly and re-launching it, theming is working again and fonts are rendered correctly.
I guess refreshing gtk-common-themes while apps that connect to it are running is expected to trigger all sorts of problems like this, but it does result in a bad UX.
I don’t think there’s anything in this update that should cause this kind of thing: in particular, gtk-common-themes shouldn’t have anything to do with the fonts an app can see.
There have been issues in the past with updating existing mount namespaces during an upgrade, but I wouldn’t have expected this to be any more complex than other upgrades of the snap. I haven’t changed the slot definitions, so it should be mounting the same directories as it did before.
Thanks for the test feedback. For what it is worth, you can force an app to use a different GTK theme via the GTK_THEME environment variable. Strict confined snap apps should be able to use any of the themes provided by gtk-common-themes, irrespective of what is available to unconfined apps.
Well specifically snap-update-ns has to undo the mount and redo them, since with layouts and content interfaces, we use mounts with the revision number in them, so refreshes to the snap will cause new mounts to need to be created even if there was no change to the slot definition.
Right: what I meant was that this update shouldn’t be any different to other gtk-common-themes refreshes in respect to how the mount namespaces are updated. The call for testing was more about the changed content being mounted.