Разработка расширения оболочки Gnome

Я делаю свои первые шаги в разработке расширений оболочки gnome 3. На самом деле я пытаюсь реализовать эту простую вещь: я хочу подавить раздражающее уведомление «Приложение xyz готово». После небольшого исследования я обнаружил, что этот класс ответственен:

WindowAttentionHandler from /usr/share/gnome-shell/js/ui/windowAttentionHandler.js

Это включает в себя метод обработчика событий под названием «_onWindowDemandsAttention», который отправляет уведомление. Быстрый и грязный тест, закомментировав ответственный код в этом методе, приводит к тому, что я хочу: больше не нужно уведомление «Application xyz is ready».

Чтобы не быть таким грязным, взломав исходные коды, я хочу написать небольшое расширение оболочки, которое перегружает метод «WindowAttentionHandler._onWindowDemandsAttention» не более чем простым «return».

Здесь можно прочитать - в разделе «Как расширяет функциональность» можно просто перегрузить функцию с помощью .prototype. После исследования правильного синтаксиса у меня теперь есть расширение с этим простым кодом в extension.js только для проверки работоспособности:

const WindowAttentionHandler = imports.ui.windowAttentionHandler;

function init() {
}

function enable() {
WindowAttentionHandler.WindowAttentionHandler.prototype._onWindowDemandsAttention=function(display, window) { 
                return;
        }
}

function disable() {
}

Включение расширения и перезапуск оболочки gnome не вызывают ошибок (ничего в журналах сеансов gnome нет). или в LookingGlass) НО это тоже не работает: уведомления «Application xyz is ready» все еще появляются.

Я могу убедиться, что расширение действительно загружено, добавив некоторые выходные данные отладки (log («BLAA»)) в функции «init» или «enable».

1114 Любой намек на то, что я делаю не так? Или я должен использовать другое решение?

4
задан 17 October 2018 в 15:04

1 ответ

Скорее всего, обработчик уже инстанцируют в то время, когда Ваше расширение переопределяет шаблон, из которого это было уже создано. Необходимо будет выследить рабочий экземпляр и переопределение что, не шаблон библиотеки.

0
ответ дан 17 October 2018 в 15:04

Другие вопросы по тегам:

Похожие вопросы: