作为自学如何制作 gnome-shell-extensions 的一部分,我希望能够告诉一个窗口位于所有工作区中所有其他窗口的顶部。
我注意到 mutter API 中有一个meta_window_set_above
in window.c
,但这似乎没有暴露给 JS 接口。经过反复尝试,我似乎也可以调用这个函数,window.set_property('above',true)
但这个函数似乎什么也没做('title'
我测试过一个属性,但使用set_property
它似乎什么也没做)。
那么,有人知道在 gnome shell 扩展中设置窗口属性的另一种方法吗?(以及如何判断 API 中的函数是否通过 javascript 公开?我(天真地)以为这会像“哦,有一个,所以我必须能够调用”一样简单meta_window_set_above
,window.c
但window.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_above
,unmake_above
,pin
,unpin
,stick
和unstick
(虽然我不知道pin
和之间有什么区别stick
),全部列出这里。