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 .