Como parte do meu aprendizado sobre como criar extensões do gnome-shell, gostaria de poder dizer a uma janela que esteja em todos os espaços de trabalho, acima de todas as outras janelas.
Percebo que na API mutter há um meta_window_set_above
in window.c
, mas isso não parece estar exposto à interface JS. Através de um pouco de tentativa e erro, também consigo chamar, window.set_property('above',true)
mas essa função parece não fazer nada (há uma 'title'
propriedade que testei e usar set_property
nela parece não fazer nada).
Então, alguém conhece uma maneira alternativa de definir as propriedades de uma janela em uma extensão do shell do gnome? (e como saber se uma função na API é exposta por meio de javascript? Eu (ingenuamente) pensei que seria tão fácil quanto "ah, há um meta_window_set_above
in window.c
, então devo poder chamar window.set_above(true)
, mas acho que não.
Responder1
Eu fiz essa pergunta aolista de discussão do gnomo- acontece que as propriedades da meta janela são todas somente leitura, então não posso (atualmente) definir as opções acima/em todos os espaços de trabalho usando mutter.
No entanto, posso usar uma bibliotecacarambaPara alcançar isto. Embora o murmúrio ainda seja o preferido, esta pode ser a única maneira por enquanto.
Felizmente, o wnck tem introspecção de objetos, então isso foi suficiente:
const Wnck = imports.gi.Wnck;
let window = Wnck.Screen.get_default().get_active_window();
if ( window ) {
window.make_above();
}
Existem funções make_above
, unmake_above
, pin
, unpin
, stick
, e unstick
(embora eu não saiba qual é a diferença entre pin
e stick
), todas listadasaqui.