Além de listar o PID como descrito em outras respostas por Florian Diesch e Serg, você pode usar a opção -ic
para fechar a janela diretamente:
$ wmctrl -ic 0x02e00085
Dado os IDs produzidos por wmctrl -l
, gostaria de poder eliminar o processo vinculado à ID da janela.
Como você sugeriria fazer isso? '
Além de listar o PID como descrito em outras respostas por Florian Diesch e Serg, você pode usar a opção -ic
para fechar a janela diretamente:
$ wmctrl -ic 0x02e00085
Se você usa wmctrl -lp
, os PIDs estão na terceira coluna.
Para um determinado ID de janela, você pode usar
kill $(wmctrl -lp | awk '/^WID/ {print }')
(substitua o WID pela sua ID de janela)
wmctrl
na verdade tem outro sinalizador -p
para listar o PID.
bash-4.3$ wmctrl -lp
0x0380000a 0 4410 eagle Desktop
0x04800006 0 4275 eagle XdndCollectionWindowImp
0x04800009 0 4275 eagle unity-launcher
0x0480000c 0 4275 eagle unity-panel
0x0480000f 0 4275 eagle unity-dash
0x04800010 0 4275 eagle Hud
Uma vez que você sabe disso, é um exercício trivial extrair o PID dessa janela e passá-lo para kill
wmctrl -lp | awk '/Window Title/{print }' | xargs kill
Você também pode usar xkill -id [id]
. O utilitário xkill funciona de forma diferente das outras respostas - em vez de fechar a janela ou matar o processo diretamente, ele instrui o servidor X para desconectar o cliente que criou a janela. Isso normalmente tem o efeito de fazer com que o processo termine mesmo para um processo remoto.
Vantagens e desvantagens de cada abordagem:
wmctrl -c
fecha uma janela "graciosamente" - como se você tivesse clicado no botão fechar do gerenciador de janelas. Isso pode não matar o processo, e pode nem mesmo fechar a janela, se o aplicativo não quiser que a janela seja fechada ou esteja congelada.
Usar o pid de wmctrl -lp
com kill
garante matar o processo, mas pode exigir trabalho extra ou não funcionar se o processo estiver sendo executado em uma máquina diferente.
xkill
não pode encerrar o processo, se ele for projetado para se recuperar de uma falha do servidor X ou perda de conectividade de rede, mas a maioria dos aplicativos simplesmente falhará nessas circunstâncias. Em qualquer caso, as janelas terão desaparecido. E processos remotos e locais são tratados de forma idêntica.
use xkill
. Basta digitar xkill
no seu terminal e clicar na janela desejada.
xkill
Tags command-line bash batch wmctrl