Dadas las ID producidas por wmctrl -l, me gustaría poder matar el proceso vinculado a la ID de la ventana.
¿Cómo sugerirías hacerlo?
Dadas las ID producidas por wmctrl -l, me gustaría poder matar el proceso vinculado a la ID de la ventana.
¿Cómo sugerirías hacerlo?
Respuestas:
Además de enumerar el PID como se describe en otras respuestas de Florian Diesch y Serg, puede usar la -icopción para cerrar la ventana directamente:
$ wmctrl -ic 0x02e00085
Si usa wmctrl -lplos PID, están en la tercera columna.
Para una ID de ventana determinada, puede usar
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(reemplace WID con su ID de ventana)
col3 .
wmctrlen realidad tiene otra bandera -ppara listar 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 vez que sepa esto, es un ejercicio trivial de extraer el PID de esa ventana y pasarlo a kill
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
También puedes usar xkill -id [id]. La utilidad xkill funciona de manera diferente a las otras respuestas: en lugar de cerrar la ventana o eliminar el proceso directamente, le indica al servidor X que desconecte al cliente que creó la ventana. Esto normalmente tiene el efecto de hacer que el proceso finalice incluso para un proceso remoto.
Ventajas y desventajas de cada enfoque:
wmctrl -ccierra una ventana "con gracia", como si usted mismo hubiera hecho clic en el botón Cerrar del administrador de ventanas. Esto puede no matar el proceso, y puede que ni siquiera cierre la ventana, si la aplicación no quiere que la ventana se cierre o se congele.
El uso de pid from wmctrl -lpwith killestá garantizado para matar el proceso, pero puede requerir trabajo adicional o no funcionar en absoluto si el proceso puede ejecutarse en una máquina diferente.
xkilles posible que no finalice el proceso si está diseñado para poder recuperarse de un bloqueo del servidor X o pérdida de conectividad de red, pero la mayoría de las aplicaciones simplemente se bloquean en estas circunstancias. En cualquier caso, las ventanas se habrán ido. Y los procesos remotos y locales se manejan de manera idéntica.
uso xkill. Simplemente escriba xkillsu terminal y haga clic en la ventana requerida.
xkill