Call for testing: gtk-common-themes

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:

  1. Do you have any problems upgrading to this version of the snap?
  2. 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.

It looks like I am already using the candidate channel, but I’m seeing something weird:

osomon@dantian:~$ snap info gtk-common-themes
name:      gtk-common-themes
summary:   All the (common) themes
publisher: Canonical✓
store-url: https://snapcraft.io/gtk-common-themes
contact:   https://gitlab.gnome.org/Community/Ubuntu/gtk-common-themes/issues
license:   unset
description: |
  A snap that exports the GTK and icon themes used on various Linux distros.
snap-id:      jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
tracking:     latest/candidate
refresh-date: 2021-04-21
channels:
  latest/stable:    0.1-52-gb92ac40 2021-04-22 (1515) 68MB -
  latest/candidate: 0.1-52-gb92ac40 2021-08-27 (1515) 68MB -
  latest/beta:      0.1-52-gb92ac40 2021-04-21 (1515) 68MB -
  latest/edge:      0.1             2021-08-27 (1517) 70MB -
installed:          0.1-52-gb92ac40            (1515) 68MB -

The revision in stable, candidate and beta is the same (1515), however the last update date for beta is today. Did the promotion to candidate fail partway, somehow?

Sorry. I meant to list the edge channel in the instructions. I’ve updated them above now.

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:
    http://icon-theme.freedesktop.org/releases

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.

1 Like

I tested this :

sudo snap refresh --edge gtk-common-themes
Installed the snap from edge channel successfully, following are the details.

snap-id:      jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
tracking:     latest/edge
refresh-date: today at 17:51 IST
channels:
  latest/stable:    0.1-52-gb92ac40 2021-04-22 (1515) 68MB -
  latest/candidate: 0.1-52-gb92ac40 2021-08-27 (1515) 68MB -
  latest/beta:      0.1-52-gb92ac40 2021-04-21 (1515) 68MB -
  latest/edge:      0.1             2021-08-27 (1517) 70MB -
installed:          0.1                        (1517) 70MB -

I tested this update on Host Ubuntu 16.04:

Distributor ID: Ubuntu
Description: Ubuntu 16.04.7 LTS
Release: 16.04
Codename: xenial

My feedback:

  1. I did not faced any problem while upgrading this snap.
  2. gtk-common-themes misrender after the update?
    • I tested Firefox snap version: 91.0.2-1 that is connected to gtk-common-themes, Faced no render issues so far in the UI.
    • I do not have arc theme on my host, so cannot switch to it.
    • Same here with Yaru. Will test them on 20.04 soon.
1 Like

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.

1 Like

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.

1 Like

There’s a build of this in the candidate channel now. There were some issues with getting it to build in Launchpad (some issues with the architectures stanza resulting in no builds being scheduled). We’ll probably flip this over to stable some time soon.