Нарушение совместимости вызвано переходом GNOME Shell с собственной системы импорта модулей, специфичной для JavaScript runtime GJS (GNOME JavaScript на базе движка SpiderMonkey от проекта Mozilla), на стандартный механизм импорта, JavaScript-модулей (ESM), описанный в спецификации ECMAScript 6 и применяемый в web-приложениях. Отличия сводятся к тому, что ранее в дополнениях к GNOME Shell для подключения JavaScript-модулей и GObject-обвязок применялся объект «imports», а теперь должен использоваться оператор «import».
// Было const GLib = imports.gi.GLib; const Main = imports.ui.main; imports.gi.versions.Soup = '3.0'; const Soup = imports.gi.Soup; // Стало import GLib from 'gi://GLib'; import * as Main from 'resource:///org/gnome/shell/ui/main.js'; import Soup from 'gi://Soup?version=3.0';
Для работы в GNOME 45 и более новых выпусках в дополнениях необходимо изменить код, связанный с загрузкой библиотек, обеспечить присутствие в файле extension.js методов enable()/disable() в классе default и при использовании prefs.js определить подкласс ExtensionPreferences с методом fillPreferencesWindow. Изменённую версию дополнения следует привязать к новыми выпускам GNOME Shell через параметр ‘»shell-version»: [ «45» ]’ в metadata.json. Для GNOME до выпуска 45 можно сформировать отдельные варианты дополнений, также обеспечив в них привязку к старым версиям через параметр shell-version в metadata.json. Протестировать изменённые дополнения можно воспользовавшись сборками GNOME OS.
Источник: http://www.opennet.ru/opennews/art.shtml?num=59711