Skip to content

Port Extensions to GNOME Shell 44

Metadata

TIP

There were no relevant changes to metadata.json in GNOME 44.

Extension

TIP

There were no relevant changes to extension.js in GNOME 44.

Preferences

TIP

There were no relevant changes to prefs.js in GNOME 44.

GNOME Shell

GSettings Schema

GNOME Shell 44 can compile the GSettings Schemas file(s) while installing the extension package.

In case you are using your own GSettings Schemas, you MUST only include the schemas/org.gnome.shell.extensions.<schema-id>.gschema.xml file(s) and avoid shipping the gschemas.compiled in the package (if your extension is only supporting GNOME Shell 44 and later).

Background Apps

ui.status.backgroundApps is a new section in quick settings that can show list of the apps running in the background (while the actual window is closed).

BackgroundAppMenuItem will be used for each item in the list. Each item has a close button that can quit the app via D-Bus or sending SIGKILL to the process (in case the D-Bus quit fails).

TypeWhere
Direct Accessui.main.panel.statusArea.quickSettings._backgroundApps
Created Inui.panel.QuickSettings._init()
Style class.background-apps-quick-toggle
Style class (item).background-app-item
Style class (item close button).background-app-item .close-button

QuickToggle and QuickMenuToggle

Use of label for QuickToggle and QuickMenuToggle is deprecated in favor of title and will print a warning when accessed. Additionally, it can not be used as a construct property:

js
// GNOME 43
const toggle43 = new QuickToggle({ label: 'Feature' });

// GNOME 44
const toggle44 = new QuickToggle({ title: 'Feature' });

// GNOME 43 & 44
const toggle = new QuickToggle();
toggle.label = 'Feature';

In addition to title, there is new subtitle property that you can use for showing sub title.

GNOME Shell 44 features a new Background Apps menu in the quick settings menu, which looks different from other quick settings tiles. If you want your toggle above the Background Apps menu, you can move it after adding it with the built-in function:

js
const QuickSettingsMenu = imports.ui.main.panel.statusArea.quickSettings;

function addQuickSettingsItems(items) {
    // Add the items with the built-in function
    QuickSettingsMenu._addItems(items);

    // Ensure the tile(s) are above the background apps menu
    for (const item of items) {
        QuickSettingsMenu.menu._grid.set_child_below_sibling(item,
            QuickSettingsMenu._backgroundApps.quickSettingsItems[0]);
    }
}

Unlock dialog

GNOME Shell 44 changed the blur values for unlock dialog (ui.unlockDialog):

TypeOld ValueNew Value
BLUR_BRIGHTNESS0.550.65
BLUR_SIGMA6045

Also, the switch user button is using different style class:

Old Style ClassNew Style Class
.modal-dialog-button.switch-user-button .button.login-dialog-button.switch-user-button

Gtk.IconTheme

If you are using Gtk.IconTheme in extension.js you should use St.IconTheme instead.

For example:

js
const {St} = imports.gi;

const iconTheme = new St.IconTheme();
if (!iconTheme.get_search_path().includes(ICONS_FOLDER_PATH)) {
    iconTheme.append_search_path(ICONS_FOLDER_PATH);
}
iconTheme.rescan_if_needed();

Meta.later_add() and Meta.later_remove()

Meta.later_add() and Meta.later_remove() are now Meta.Laters.add() and Meta.Laters.remove(), respectively. Refer to Meta.Laters.

You can get the Meta.Laters from compositor with:

js
const laters = global.compositor.get_laters();

GJS

TIP

There were no relevant changes to GJS in GNOME 44.

MIT Licensed | GJS, A GNOME Project