Como identificar janelas específicas do Chrome
Se as janelas forem sempre criadas (na inicialização) na mesma ordem cronológica (como você mencionou em um comentário), você pode usar uma propriedade específica da saída do comando wmctrl -l
: A lista sempre lista as janelas na ordem em que foram criadas .
Isso significa que se você tiver (por exemplo) três janelas, recriadas sempre na mesma ordem, você pode simplesmente filtrar as janelas, pertencentes a Chrome
, "marcar" as janelas por ordem aparecer (ed) na saída de wmctrl
.
Como filtrar as janelas Chrome
do wmctrl
Para identificar janelas, pertencentes a um aplicativo, você precisa usar o comando:
wmctrl -lp
que também mostrará o pid ao qual a janela pertence. Normalmente, este é um single pid. No caso de Chrome
, no entanto, haverá vários.
O procedimento, programaticamente, é então:
-
Encontre os pids de
Chrome
executando:pgrep chrome
-
Execute o comando:
wmctrl -lp
-
analise, por janela, o pid a janela pertence e procure por uma correspondência na saída (lista) de
pgrep chrome
Issoproduziráumalistadejanelaspertencentesa
Chrome
.Suaidentificação,comomencionado,éaordemdelesnalista.Tudooquevocêprecisafazeréanalisaroiddajanela(aprimeirastringnalinhanasaídadewmctrl-lp
quevocêexecutou)epronto.
Posteriormente,useocomandousualparamoverasjanelasparaoespaçodetrabalhodesejado.
Umexemplo;oteste
Comoexemplodescriptparatestarseissofunciona(python,oquemais:))
#!/usr/bin/env python3
import subprocess
# get the list of pids of chrome
pids = [p for p in subprocess.check_output(["pgrep", "chrome"]).decode("utf-8").splitlines()]
# get the list of windows
windows = [l.split() for l in subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()]
# filter out the windows of chrome, parse their window-id
matches = [w[0] for w in windows if w[2] in pids]
print(matches)
# raise the window
subprocess.Popen(["wmctrl", "-ia", matches[0]])
Neste exemplo, abri as três Chrome
janelas, fechei-as como você descreveu e abri Chrome
novamente.
Em matches[0]
(última linha), criei a primeira janela da lista:
['0x05600001', '0x05600039', '0x0560003a']
Na próxima execução, o ID da janela mudou:
['0x05800001', '0x05800039', '0x0580003a']
mas sua ordem na lista permaneceu, uma vez que (na verdade) as janelas são sempre criadas na mesma ordem (cronológica). Portanto, a última linha do script:
subprocess.Popen(["wmctrl", "-ia", matches[0]])
sempre faz a mesma janela (primeira) aumentar, enquanto
subprocess.Popen(["wmctrl", "-ia", matches[1]])
sempre aumentará o segundo e assim por diante.
Substitua o comando raise pelo comando move e você terá seu script funcionando.