Como posso matar uma janela X específica

9

Dados os IDs produzidos por wmctrl -l, eu gostaria de poder eliminar o processo vinculado ao ID da janela.

Como você sugeriria fazer isso?

user123456
fonte

Respostas:

10

Além de listar o PID conforme descrito em outras respostas de Florian Diesch e Serg, você pode usar a -icopção para fechar a janela diretamente:

$ wmctrl -ic 0x02e00085
Nykakin
fonte
3
Se o processo estiver travado, talvez você não note que você fechou a janela. A janela desapareceu, mas o processo ainda estará lá e possivelmente consumirá CPU e RAM.
kasperd
9

Se você usar wmctrl -lpos 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)

Florian Diesch
fonte
Talvez limpador, em vez de awk, você possa usarcol3 .
Pablo Bianchi
8

wmctrlna verdade, tem outro sinalizador -ppara 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
Sergiy Kolodyazhnyy
fonte
6

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 -cfecha 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 -lpcom 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.

  • xkillpode 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.

Random832
fonte
1

use xkill. Basta digitar xkillseu terminal e clicar na janela desejada.

xkill

Abhishek Dhanraj Shahdeo
fonte