Port Extensions to GNOME Shell 44

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.backgroundAppsopen in new window is a new section in quick settings that can show list of the apps running in the background (while the actual window is closed).

BackgroundAppMenuItemopen in new window 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 favour of title and will print a warning when accessed. Additionally, it can not be used as a construct property:

// 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';
1
2
3
4
5
6
7
8
9

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:

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]);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12

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.IconThemeopen in new window instead.

For example:

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();
1
2
3
4
5
6
7

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.Latersopen in new window.

You can get the Meta.Laters from compositor with:

const laters = global.compositor.get_laters();
1
Last Updated: 5/14/2023, 6:53:14 AM
Contributors: Javad Rahmatzadeh, Andy Holmes, Andy Holmes, jeffshee