在 js/gnome-shell-extension 中設定視窗屬性(上面,在所有工作區上)?

在 js/gnome-shell-extension 中設定視窗屬性(上面,在所有工作區上)?

作為自學如何製作 gnome-shell-extensions 的一部分,我希望能夠告訴一個視窗位於所有其他視窗之上的所有工作區上。

我注意到 mutter API 中有一個meta_window_set_aboveinwindow.c但這似乎沒有暴露給 JS 介面。透過一些試驗和錯誤,我似乎也能夠調用,window.set_property('above',true)但這個函數似乎什麼也沒做('title'我測試了一個屬性,並且set_property在這個屬性上使用似乎什麼都不做)。

那麼,有誰知道在 gnome shell 擴充中設定視窗屬性的替代方法嗎? (以及如何判斷 API 中的函數是否透過 javascript 公開?我(天真地)認為這就像「哦,有一個meta_window_set_abovein window.c,所以我必須能夠調用 」一樣簡單window.set_above(true),但我想不能。

答案1

我問了這個問題侏儒郵件列表- 事實證明,元視窗屬性都是唯讀的,因此我(目前)無法使用 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),都列出來了這裡

相關內容