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 シェル拡張機能でウィンドウのプロパティを設定する別の方法を誰か知っていますか? (また、API の関数が JavaScript を通じて公開されるかどうかを確認する方法は? 私は (素朴に) 「ああ、 には があるのでmeta_window_set_abovewindow.cを呼び出せるはずだ」というくらい簡単だと思っていましたwindow.set_above(true)が、そうではないようです。

答え1

私はこう尋ねたgnome メーリングリスト- メタ ウィンドウのプロパティはすべて読み取り専用であることが判明したため、(現時点では) mutter を使用して上記/すべてのワークスペースのオプションを設定することはできません。

しかし、図書館を利用することはできるwnckこれを実現するには、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_abovepinunpinstickunstickpinstickここ

関連情報