Dati gli ID prodotti da wmctrl -l
, mi piacerebbe poter interrompere il processo collegato all'ID della finestra.
Come consiglieresti di farlo?
Dati gli ID prodotti da wmctrl -l
, mi piacerebbe poter interrompere il processo collegato all'ID della finestra.
Come consiglieresti di farlo?
Risposte:
Oltre a elencare il PID come descritto nelle altre risposte di Florian Diesch e Serg, puoi usare l' -ic
opzione per chiudere direttamente la finestra:
$ wmctrl -ic 0x02e00085
Se si utilizzano wmctrl -lp
i PID si trovano nella terza colonna.
Per un determinato ID finestra è possibile utilizzare
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(sostituisci WID con il tuo ID finestra)
col3
.
wmctrl
in realtà ha un altro flag -p
per elencare 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
Una volta che lo sai, è un esercizio banale di estrarre il PID di quella finestra e passarlo a kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
Puoi anche usare xkill -id [id]
. L' utilità xkill funziona in modo diverso dalle altre risposte - anziché chiudere la finestra o uccidere direttamente il processo, indica al server X di disconnettere il client che ha creato la finestra. Questo di solito ha l'effetto di far terminare il processo anche per un processo remoto.
Vantaggi e svantaggi di ciascun approccio:
wmctrl -c
chiude una finestra "con garbo", come se si fosse fatto clic sul pulsante Chiudi del gestore finestre. Questo potrebbe non uccidere il processo e potrebbe anche non chiudere la finestra, se l'applicazione non desidera che la finestra venga chiusa o venga bloccata.
L'uso del pid da wmctrl -lp
con kill
è garantito per interrompere il processo, ma potrebbe richiedere un lavoro extra o non funzionare affatto se il processo potrebbe essere in esecuzione su un altro computer.
xkill
potrebbe non terminare il processo, se è progettato per essere in grado di recuperare da un arresto del server X o dalla perdita della connettività di rete, ma la maggior parte delle applicazioni si arresta in modo anomalo in queste circostanze. In ogni caso, le finestre spariranno. E i processi remoti e quelli locali sono gestiti in modo identico.
usare xkill
. Basta digitare xkill
il terminale e fare clic sulla finestra richiesta.
xkill