在 js/gnome-shell-extension 中设置窗口属性(上面,在所有工作区上)?

在 js/gnome-shell-extension 中设置窗口属性(上面,在所有工作区上)?

作为自学如何制作 gnome-shell-extensions 的一部分,我希望能够告诉一个窗口位于所有工作区中所有其他窗口的顶部。

我注意到 mutter API 中有一个meta_window_set_abovein window.c,但这似乎没有暴露给 JS 接口。经过反复尝试,我似乎也可以调用这个函数,window.set_property('above',true)但这个函数似乎什么也没做('title'我测试过一个属性,但使用set_property它似乎什么也没做)。

那么,有人知道在 gnome shell 扩展中设置窗口属性的另一种方法吗?(以及如何判断 API 中的函数是否通过 javascript 公开?我(天真地)以为这会像“哦,有一个,所以我必须能够调用”一样简单meta_window_set_abovewindow.cwindow.set_above(true)我想不是。

答案1

我问过这个问题gnome 邮件列表- 事实证明元窗口属性都是只读的,所以我无法(目前)使用 mutter 设置上述/所有工作区选项。

不过我可以使用图书馆温克来实现这一点。虽然 mutter 仍然是首选,但这可能是目前唯一的方法。

幸运的是,wnck 有 gobject 自省功能,因此这就足够了:

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

有函数make_aboveunmake_abovepinunpinstickunstick(虽然我不知道pin和之间有什么区别stick),全部列出这里

相关内容