tecla de atalho LXDE para iniciar o aplicativo ou alternar para ele se já estiver em execução

1

Eu me acostumei com as teclas de atalho do Win + (1..9) no Windows 7+ e gostaria de implementar algo como isso no LXDE.

Então, eu preciso definir uma tecla de atalho que:

  • iniciar aplicativo definido se ainda não for lançado, OU

  • me mude para esse aplicativo se ele já estiver em execução.

Como isso pode ser feito?

Posso verificar se o aplicativo está em execução usando ps -e | grep appname , mas há alguma maneira de fazer o LXDE alternar para o aplicativo pelo nome ou pelo PID usando a linha de comando? Ou talvez existam outras maneiras de fazer tudo isso?

Eu tenho implementado esse comportamento no WinXP usando o AutoHotkey. No Win7 / Win8 é nativo. E é muito útil, então eu gostaria de usá-lo no meu Debian também.

    
por user3558897 01.08.2015 / 20:37

1 resposta

0

O Unix não tem exatamente um conceito de “Aplicativo” . Em vez de usar processos, as janelas de nível superior seriam um indicador melhor. Eles são mais fáceis de detectar com precisão e você não detectará falsamente aplicativos de outro usuário.

Cada janela tem uma classe que identifica sua aplicação. Para ver o nome da classe de um aplicativo, execute o seguinte comando em um terminal e clique na janela do aplicativo:

xprop WM_CLASS

Isso exibe duas sequências: o nome da instância e o nome da classe.

As ferramentas mais úteis para exibir informações sobre janelas e executar algumas ações básicas nelas são xdotool e < href="https://sites.google.com/site/tstyblo//wmctrl/"> wmctrl .

Com wmctrl , você pode usar wmctrl -F -x -a "$instance.$class" para ativar uma das janelas com a instância e a classe fornecidas. Se não houver uma janela correspondente, wmctrl retornará um status de erro, para que você possa optar por iniciar o programa. Exemplo:

wmctrl -F -x -a Navigator.Firefox || firefox &

O comando equivalente xdotool:

xdotool search --class --maxdepth 2 Firefox windowactivate || firefox &

Se houver várias janelas de nível superior, não há uma maneira fácil de determinar qual delas será ativada. Para ativar o mais recente, você precisará da cooperação do seu gerenciador de janelas - Openbox por padrão no LXDE. Eu não estou familiarizado com o Openbox, mas ele é razoavelmente enxuto, então ele pode não oferecer uma maneira de relatar a janela ativada mais recentemente. Eu acho que o LXDE pode ser usado com outros gerenciadores de janelas, como sawfish , que é programável para que você possa codificar essa funcionalidade dentro os gerenciadores de janelas em algumas linhas de código.

Use o mecanismo de configuração de ligação de chaves do gerenciador de janelas para vincular as chaves que você deseja a um desses comandos .

    
por 02.08.2015 / 01:06