web-dev-qa-db-ja.com

js / gnome-Shell-extensionでウィンドウプロパティ(上記、すべてのワークスペース)を設定しますか?

Gnome-Shell-extensionsの作成方法を自分自身に教える一環として、他のすべてのウィンドウの上にあるすべてのワークスペースにウィンドウを配置するように指示できるようにしたいと思います。

Mutter APIの_meta_window_set_above_に_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)を呼び出すが、そうではないと思う。

2

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

ただし、これを実現するためにライブラリ wnck を使用できます。つぶやきがまだ好まれますが、これが今のところ唯一の方法かもしれません。

幸い、wnckにはgobjectのイントロスペクションがあるので、これで十分でした。

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

関数がありますmake_aboveunmake_abovepinunpinstick、およびunstickpinstickの違いはわかりませんが)、すべてリストされています ここ

2