2

I've written a GNOME shell extension for gnome3.30-3.32 using:

const ExtensionUtils = imports.misc.extensionUtils;
...

ExtensionSystem.disableExtension(ExtensionUtils.extensions['extension-uuid'].uuid);

Updating to 3.34 version, ExtensionUtils does not provide the 'extension' property, and I don't know to find the documentation about it.

How can I fix the issue?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131

1 Answers1

2

The code you're looking for, the map of loaded extensions, is also a part of the ExtensionSystem module, whereas the ExtensionUtils module is mostly utilities for extension authors like GSettings and Gettext helpers.

The functions you are looking for are a part of the class ExtensionManager in 3.34+. You can get the ExtensionManager instance from the Main import:

// >= 3.34
const Main = imports.ui.main;
const ExtensionManager = Main.extensionManager;

ExtensionManager.disableExtension(uuid);

// <= 3.32
const ExtensionSystem = imports.misc.extensionSystem;

ExtensionSystem.disableExtension(uuid);


// Handling both versions
const Config = imports.misc.config;

if (Config.PACKAGE_VERSION.split('.')[1] >= 34) {
    let manager = imports.ui.main.extensionManager;

    manager.disableExtension(uuid);
} else {
    let extSystem = imports.misc.extensionSystem;

    extSystem.disableExtension(uuid);
}

Sources:

You can use the branch selector on the left of the GitLab page to select the version, or the history button on the right to view a list of changes to a given file.

andy.holmes
  • 3,383
  • 17
  • 28
  • Issue fixed! if (extensions._enabledExtensions.includes(uuid)) { extensions.disableExtension(uuid); } else { extensions.enableExtension(uuid); – vittorio urbani Sep 25 '19 at 10:33