Como posso programaticamente mostrar / ocultar a janela do aplicativo com a tecla de atalho global?

5

Estou escrevendo um clone Notational Velocity para o Gnome / Ubuntu usando o Quickly (PyGI) e quero permitir que os usuários definam uma tecla de atalho global que alterne a visibilidade da janela do aplicativo quando o aplicativo estiver em execução (algo como Tilda faz para o seu emulador de terminal). Ou seja, depois que o aplicativo é iniciado, um usuário pode pressionar F2 para ocultar a janela e, em seguida, pressionar F2 novamente para torná-lo visível e trazê-lo para a frente. Eu não quero usar um aplicativo hotkey externo ou qualquer coisa que exija configurações fora do aplicativo. Como eu faria isso?

Há uma pergunta semelhante aqui: Como posso escutar as teclas globais? evento? mas a principal resposta é uma solução não programática complicada. Um comentarista menciona "pegar o teclado com uma chamada de X api", mas não sei por onde começar com isso.

    
por monotasker 21.07.2012 / 21:19

2 respostas

3

A biblioteca Keybinder faz exatamente esta . Se você checar requisições de pull, existem requisições para exemplos usando pygi, uma das quais sou eu para py3k.

    
por RobotHumans 23.02.2014 / 18:37
2

Sei que essa é uma configuração externa, não no aplicativo, mas pensei em escrever como fazer isso, pois não consegui encontrar a documentação on-line.

Eu precisava ler algumas configurações do Compiz recentemente para o meu programa, então descobrir como alterá-las era bastante simples. Você pode programaticamente definir configurações de compiz em python usando python-compizconfig. Eu joguei com ele um pouco e você pode definir valores como:

import compizconfig
context=compizconfig.Context()
commandplugin=context.Plugins['commands']
c0=commandplugin.Screen['command0']
c0.Value='xeyes'
key0=commandplugin.Screen['run_command0_key']
key0.Value='<Control><Primary>g'
context.Write()   #Note that sometimes you have to pass False to get it to update settings

O item acima define o plug-in de comandos do compiz para executar xeyes usando keycombination control-g. Você provavelmente teria que fazer uma verificação para certificar-se de que o plugin estava em execução (o meu estava desligado no ccsm por padrão). Observe que, para obter muitas das configurações, você pode usar a função keys() para listá-las (por exemplo, context.Plugins.keys()

Aqui está um link para o código que me ajudou a descobrir como isso funciona, já que não consigo encontrar nenhuma documentação: link

    
por Ian B. 20.08.2012 / 04:56