A combinação de xlsw
e xdotool
faz o truque.
xlsw
lista as janelas pelo título e tipo, xdotool
faz ações nelas. Em princípio, xdotool
também pode procurar nomes de janelas, mas perdeu o que eram janelas popup.
Em bash
:
xlsw | grep 'Firefox/Popup' | awk '{print $1}' | \
while read _windowID; do xdotool windowclose "${_windowID}"; done
Explicação:
xlsw
gera uma lista de IDs de janela juntamente com informações adicionais. A saída parece com:
[...]
0x04800001 u-- Pale moon/pale moon Pale Moon
0x04800092 uio NA Pale Moon
0x04800093 u-o Pale moon/palemoon Pale Moon
0x04800099 u-o Pale moon/palemoon Pale Moon
0x04828D21 u-o Pale moon/Popup Pale Moon
0x0489C5D6 u-o Pale moon/Popup Pale Moon
0x03600001 ui- NA NA
0x04604E77 --o Claws-mail/claws-mail claws-mail
0x04604EAC --o Claws-mail/claws-mail claws-mail
0x04604F22 --o Claws-mail/claws-mail claws-mail
0x05C00001 uio NA NA
0x05E00001 u-- NA NA
0x05200007 ui- NA NA
0x05E00002 u-- Wine/explorer.exe
[...]
Em seguida, com o grep
-command, as janelas pop-up de firefox
serão selecionadas (no exemplo acima, todas elas já desapareceram). awk
imprime a primeira entrada, que é a ID da janela, e então xdotool windowclose
fechará as janelas (algo como apertando o botão "fechar") sem matar o aplicativo de controle. ( xdotool windowkill
mataria o aplicativo.)
xdotool
também tem uma compilação na pesquisa: xdotool search 'firefox' windowclose
também fecha todas as janelas com 'firefox' no título, mas eu não consegui que funcionasse para diferenciar o 'Popup'.