A execução do script abaixo iniciará gnome-calculator
(ou qualquer outro aplicativo, consulte "Notas"), aguarde a exibição da janela e aumente: it.
O script
#!/usr/bin/env python3
import subprocess
import time
app = "gnome-calculator"
subprocess.Popen([app])
t = 0
while t < 20:
try:
# wait for the application's pid
pid = subprocess.check_output(["pgrep", "-f", app]).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
else:
try:
# read the window list
w_data = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
# find the window of the found pid
window = [w.split()[0] for w in w_data if pid in w][0]
# raise it and terminate the script
subprocess.Popen(["wmctrl", "-ia", window])
break
except IndexError:
pass
time.sleep(0.5)
t = t + 1
Como usar
-
O script precisa de
wmctrl
para ler a lista de janelas e aumentar a janela:sudo apt-get install wmctrl
- Copie o script em um arquivo vazio, salve-o como
raise_window.py
-
Teste - execute-o pelo comando:
python3 /path/to/raise_window.py
-
Se tudo funcionar bem, adicione o comando a um atalho de teclado: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:
python3 /path/to/raise_window.py
Notas
-
Para evitar um loop infinito (por exemplo, caso o aplicativo não seja executado por algum motivo), o script aguardará dez segundos e, em seguida, terminará de qualquer maneira. Se você quiser aumentar o tempo, altere o valor na linha:
while t < 20
(
20
=20
*0.5
segundos) -
Como mencionado, você pode usar o script para "corrigir" o comportamento de qualquer aplicativo que não seja gerado sozinho, alterando a linha:
app = "gnome-calculator"
para executar outro aplicativo (
app = "<application>"
) ou:alternativamente, para usar o script para vários aplicativos:
substitua a linha:
app = "gnome-calculator"
por:
app = sys.argv[1]
e adicione a seção head do script (diretamente abaixo da shebang):
import sys
Em seguida, execute o script pelo comando:
python3 raise_window.py <application>
Explicação
Para levantar uma janela, você pode usar o comando:
wmctrl -ia <window_id>
ou
wmctrl -a <window_name>
(assumindo que wmctrl
está instalado)
Como a janela nome possivelmente não é única, é preferível usar o ID. O truque é esperar o pid do aplicativo aparecer, testando com o comando:
pgrep -f <application>
Se o comando tiver uma saída, significa que o aplicativo tem um pid e é executado. A próxima coisa é ver se o aplicativo tem uma janela (já), usando o comando:
wmctrl -lp
, o qual irá mostrar uma lista de janelas, seu ID de janela e o pid correspondente (do aplicativo).
Se houver uma correspondência entre o pid encontrado e as janelas da lista, temos nossa janela que precisamos aumentar. Podemos analisar o ID da janela a partir da linha da janela na lista, que usaremos subseqüentemente para levantar a janela com o comando:
wmctrl -ia <window_id>