¿Establecer propiedades de ventana (arriba, en todos los espacios de trabajo) en js/gnome-shell-extension?

¿Establecer propiedades de ventana (arriba, en todos los espacios de trabajo) en js/gnome-shell-extension?

Como parte de mi aprendizaje sobre cómo crear extensiones de gnome-shell, me gustaría poder indicarle a una ventana que esté en todos los espacios de trabajo y encima de todas las demás ventanas.

Noto que en la API de murmullo hay una meta_window_set_aboveentrada window.c, pero no parece estar expuesta a la interfaz JS. A través de un poco de prueba y error, parece que también puedo llamar, window.set_property('above',true)pero esta función parece no hacer nada (hay una 'title'propiedad que probé y la que uso set_propertyparece no hacer nada).

Entonces, ¿alguien conoce una forma alternativa de configurar las propiedades de una ventana en una extensión de gnome Shell? (¿Y cómo saber si una función en la API queda expuesta a través de JavaScript? Pensé (ingenuamente) que sería tan fácil como "oh, hay un meta_window_set_abovein window.c, así que debo poder llamarlo window.set_above(true), pero supongo que no".

Respuesta1

Le hice esta pregunta allista de correo de gnomos- Resulta que todas las propiedades de la metaventana son de solo lectura, por lo que no puedo (actualmente) configurar las opciones anteriores/en todos los espacios de trabajo usando Mutter.

Sin embargo, puedo usar una biblioteca.wncklograr esto. Si bien todavía se prefiere murmurar, esta puede ser la única forma por ahora.

Afortunadamente, wnck tiene introspección de objetos, por lo que esto fue suficiente:

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

Hay funciones make_above, unmake_above, pin, unpin, sticky unstick(aunque no sé cuál es la diferencia entre piny stick), todas enumeradasaquí.

información relacionada