установить свойства окна (выше, на всех рабочих пространствах) в js/gnome-shell-extension?

установить свойства окна (выше, на всех рабочих пространствах) в js/gnome-shell-extension?

В рамках обучения созданию расширений gnome-shell я хотел бы иметь возможность размещать окно на всех рабочих столах поверх всех остальных окон.

Я заметил, что в API mutter есть meta_window_set_abovein, window.cно это, похоже, не отображается в интерфейсе JS. После нескольких проб и ошибок я также, похоже, могу вызвать, window.set_property('above',true)но эта функция, похоже, ничего не делает (есть 'title'свойство, которое я тестировал, и использование set_propertyэтого, похоже, ничего не делает).

Итак, кто-нибудь знает альтернативный способ установки свойств окна в расширении оболочки gnome? (и как узнать, предоставляется ли функция в API через javascript? Я (наивно) думал, что это будет так же просто, как «о, в , meta_window_set_aboveпоэтому window.cя должен иметь возможность вызвать » window.set_above(true), но, похоже, нет.

решение1

Я задал этот вопроссписок рассылки gnome- Оказывается, все свойства метаокна доступны только для чтения, поэтому я не могу (в настоящее время) установить указанные выше параметры для всех рабочих пространств с помощью Mutter.

Однако я могу использовать библиотеку.внкдля достижения этого. Хотя бормотание все еще предпочтительнее, это может быть единственным способом на данный момент.

К счастью, у wnck есть интроспекция gobject, так что этого было достаточно:

const Wnck = imports.gi.Wnck;
let window = Wnck.Screen.get_default().get_active_window();
if ( window ) {
    window.make_above();
}

Есть функции make_above, unmake_above, pin, unpin, stick, и unstick(хотя я не знаю, в чем разница между pinи stick), все перечисленныездесь.

Связанный контент