configura as propriedades da janela (acima, em todos os espaços de trabalho) em js / gnome-shell-extension?

2

Como parte do aprendizado de como fazer extensões do gnome-shell, eu gostaria de poder dizer a uma janela para estar em todos os espaços de trabalho sobre todas as outras janelas.

Percebo que na API do mutter existe um meta_window_set_above em window.c , mas isso não parece estar exposto à interface JS. Através de um pouco de tentativa e erro eu também pareço ser capaz de chamar window.set_property('above',true) , mas esta função parece não fazer nada (existe uma propriedade 'title' que eu testei e usando set_property sobre isso parece não fazer nada). / p>

Então, alguém sabe de 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 através de javascript? Eu (ingenuamente) pensei que seria tão fácil quanto "oh, há um meta_window_set_above em window.c , então eu devo ser capaz de chamar window.set_above(true) , mas acho que não.

    
por mathematical.coffee 21.04.2012 / 02:34

1 resposta

2

Eu fiz esta pergunta da lista de discussão do gnome - transforma que as propriedades da janela meta são todas somente leitura, então eu não posso (atualmente) definir as opções acima / em todas as áreas de trabalho usando o mutter.

No entanto, posso usar uma biblioteca wnck para conseguir isso. Embora mutter ainda seja o preferido, este pode ser o único caminho por enquanto.

Felizmente, a introspecção geral é suficiente:

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

Há funções make_above , unmake_above , pin , unpin , stick e unstick (embora não saiba qual é a diferença entre pin e stick ) , todos listados aqui .

    
por mathematical.coffee 27.04.2012 / 08:51