Fenstereigenschaften (oben, in allen Arbeitsbereichen) in js/gnome-shell-extension festlegen?

Fenstereigenschaften (oben, in allen Arbeitsbereichen) in js/gnome-shell-extension festlegen?

Im Rahmen meiner Lernarbeit zum Erstellen von Gnome-Shell-Erweiterungen möchte ich in der Lage sein, einem Fenster mitzuteilen, dass es in allen Arbeitsbereichen oder über allen anderen Fenstern angezeigt werden soll.

meta_window_set_aboveMir fällt auf, dass es in der Mutter-API ein „ in“ gibt, window.caber das scheint nicht für die JS-Schnittstelle verfügbar zu sein. Durch ein bisschen Ausprobieren kann ich anscheinend auch „in“ aufrufen, window.set_property('above',true)aber diese Funktion scheint nichts zu tun (es gibt eine 'title'Eigenschaft, die ich getestet habe, und die Verwendung set_propertyhiervon scheint nichts zu bewirken).

Kennt also jemand eine alternative Möglichkeit, die Eigenschaften eines Fensters in einer Gnome-Shell-Erweiterung festzulegen? (Und wie kann man feststellen, ob eine Funktion in der API über JavaScript verfügbar gemacht wird? Ich dachte (naiverweise), es wäre so einfach wie „Oh, da ist ein meta_window_set_abovein window.c, also muss ich in der Lage sein, aufzurufen“ window.set_above(true), aber das ist wohl nicht der Fall.

Antwort1

Ich stellte diese Frage demGnome-Mailingliste– stellt sich heraus, dass die Eigenschaften des Metafensters alle schreibgeschützt sind, sodass ich die oben genannten/für alle Arbeitsbereiche geltenden Optionen (derzeit) nicht mit Mutter festlegen kann.

Ich kann jedoch eine Bibliothek verwendenwnckum dies zu erreichen. Obwohl Muttern immer noch bevorzugt wird, ist dies im Moment möglicherweise die einzige Möglichkeit.

Glücklicherweise verfügt wnck über die Möglichkeit der Objekt-Introspektion, sodass dies ausreichend war:

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

Es gibt Funktionen make_above, unmake_above, pin, unpin, stick, und unstick(obwohl ich nicht weiß, was der Unterschied zwischen pinund ist stick), alle aufgelistetHier.

verwandte Informationen