GNOME Extensions Data Inconsistent

I’ve learned that depending on the command you run will dictate which list of extensions populate even though both commands “sound” (to a novice like myself) like they should get identical data. But they don’t.

gsettings get org.gnome.shell enabled-extensions

That returns one set of data, and the following command returns yet another:

gnome-extensions list --enabled

Where is the gsettings command getting its data, and where is the gnome-extensions command getting its data?

The gsettings command shows one part of the set of extensions that should be enabled.

The complete list of extensions that should be enabled depends on three parts:

  1. system extensions enabled via the session mode (ubuntu, classic, …)
  2. the enabled-extensions setting
  3. the disabled-extensions setting

That is, it’s the list of extensions that appear in one of 1+2 and not 3.

The gnome-extensions command queries gnome-shell for all extensions it knows about, and filters them by their ENABLED state. That is, it lists the extensions that are actually enabled.

Usually the two lists should match, however there are various possibilities why this may not be the case:

  • if an extension has an error while being enabled, it enters in ERROR state instead of ENABLED
  • if an extension only works on the lock screen, that it is set to enabled according to settings, but will only be actually enabled while the screen is locked
  • if an extension isn’t uninstalled through gnome-shell, but through the system package manager or by just deleting its folder, then the enabled-extensions setting can contain dead entries (i.e. extensions that were enabled, but no longer exist)

Hopefully this will be a bit less confusing in GNOME 46, where the ENABLED state has been to ACTIVE , so gnome-extensions list --enabled will list the extensions that should be enabled, and gnome-extensions list --active lists the ones that are actually active.

1 Like

Is there a way to manually clear out any inaccurate data such as parts of an extension that was not removed properly, etc?

Not really.

I mean, you can reset the setting to the list of enabled extensions with something along the lines of

saved_extensions=$(gnome-extensions list --enabled | xargs | sed 's:^:":; s:$:":; s: :",":g')

gsettings reset org.gnome.shell disabled-extensions
gsettings set org.gnome.shell enabled-extensions \[$saved_extensions\]

Or just reset both settings, and manually the extensions you want …

1 Like

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.