Dados os IDs produzidos por wmctrl -l
, eu gostaria de poder eliminar o processo vinculado ao ID da janela.
Como você sugeriria fazer isso?
Dados os IDs produzidos por wmctrl -l
, eu gostaria de poder eliminar o processo vinculado ao ID da janela.
Como você sugeriria fazer isso?
Respostas:
Além de listar o PID conforme descrito em outras respostas de Florian Diesch e Serg, você pode usar a -ic
opção para fechar a janela diretamente:
$ wmctrl -ic 0x02e00085
Se você usar wmctrl -lp
os PIDs, estará na terceira coluna.
Para um determinado ID de janela, você pode usar
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(substitua WID pelo seu ID da janela)
col3
.
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
Depois que você souber disso, é um exercício trivial extrair o PID dessa janela e passá-lo para kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Você também pode usar xkill -id [id]
. O utilitário xkill funciona de maneira diferente das outras respostas - em vez de fechar a janela ou interromper o processo diretamente, ele instrui o servidor X a desconectar o cliente que criou a janela. Normalmente, isso causa o término do processo, mesmo para um processo remoto.
Vantagens e desvantagens de cada abordagem:
wmctrl -c
fecha uma janela "normalmente" - como se você tivesse clicado no botão Fechar do gerenciador de janelas. Isso pode não matar o processo e nem fechar a janela, se o aplicativo não quiser que a janela seja fechada ou esteja congelada.
O uso do pid from wmctrl -lp
com kill
é garantido para matar o processo, mas pode exigir trabalho extra ou não funcionar se o processo estiver em execução em uma máquina diferente.
xkill
pode não finalizar o processo, se ele foi projetado para recuperar uma falha do servidor X ou perda de conectividade da rede, mas a maioria dos aplicativos simplesmente travará nessas circunstâncias. De qualquer forma, as janelas desaparecerão. E processos remotos e locais são tratados de forma idêntica.
use xkill
. Basta digitar xkill
seu terminal e clicar na janela desejada.
xkill