¿Cómo cerrar todas las instancias de un programa al instante?

11

El gato de mi novia estaba caminando en mi computadora portátil, y no me di cuenta. Cuando me volví para verificar, veo que tengo 32 pestañas "Administrador de archivos". ¿Cómo puedo cerrarlos todos al instante, como si usara Alt+ F4en todos a la vez?

sticsk
fuente

Respuestas:

14

Desde la línea de comando:

killall file-roller

Puede hacer alt + f4, pero debe hacerlo para cada administrador de archivos que se abrió.

Rinzwind
fuente
21
Aunque algunos podrían argumentar que el comando "killall" es un poco duro, la suya sigue siendo una solución mucho más humana que la kill catacción que iba a sugerir.
Nick Weinberg el
No creo que haya una manera más fácil de detenerlos a todos. Muchas alt + f4 lo harían pero esa no era la pregunta ;-)
Rinzwind
55
@NickWeinberg lo aprecio :)
gato
55
Leo esta pregunta y respondo mal. Pensé que se trataba de que el gato había cerrado todo, y que OP no sabía cómo lo hizo. Me sorprendió que el gato pudiera escribir killall file-roller: D
Viktor Mellgren
1
maldito @ViktorMellgren deja de hacerme derramar café en mi pantalla
Rinzwind
3

Otro enfoque sería utilizar la wmctrlutilidad (control del Administrador de ventanas). Esto se puede usar para decirle al administrador de ventanas que finja que ha hecho clic en el botón Cerrar. Esto evita la naturaleza potencialmente dura de killall; por ejemplo, algunos programas con un documento no guardado saldrán inmediatamente cuando se eliminen (incluso suavemente), mientras que al hacer clic en el botón de cierre aparece el mensaje "¿Desea guardar?" rápido.

El comando básico es wmctrl -c WINDOWTITLE, por lo tanto, en este caso wmctrl -c "Archive Manager"(suponiendo que no tenga un archivo abierto: eso cambia el título). Desafortunadamente, solo se cierra uno a la vez, por lo que debemos hacer más para cerrarlos todos.

wmctrl devuelve el éxito si encuentra una coincidencia, por lo que podemos repetir hasta que falle:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

Esto siempre elige la primera ventana que encuentra, por lo que necesitamos dormir un poco para evitar enviar continuamente una secuencia de comandos de cierre a la primera ventana que ya está ocupada cerrando, lo que puede causar un error que detiene el ciclo.

Esto es simple y generalmente funciona, pero dormir una cantidad de tiempo determinada y esperar que se cierre una ventana antes de volver a intentarlo es una forma desordenada y lenta de evitar el error. Lo que realmente queremos hacer es enviar de inmediato un mensaje de cierre a cada ventana coincidente.

Podemos encontrar todas las ventanas abiertas con wmctrl -l. Esto enumera una identificación de ventana numérica que podemos usar para identificar cada ventana individualmente, incluso si todas tienen el mismo título. Luego, debemos filtrar solo las ventanas coincidentes (el grepcomando), extraer solo la identificación de la ventana (el cutcomando) y llamar wmctrl -i -ca cada una. Se -inecesita para que coincida con la identificación de la ventana en lugar del título de la ventana.

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

Un poco complicado para escribir solo cuando un gato pisa el teclado, pero con suerte es una técnica útil para mantener en su caja de herramientas de secuencias de comandos.

Harun
fuente
2
¿Esperas que el gato escriba algo que valga la pena guardar?
Rinzwind
0

Puede usar el método abreviado de teclado Ctrl+ Qque cerrará todas las ventanas abiertas de Archive Manager.


El acceso directo Ctrl+ Qes común en Ubuntu (y muchas otras distribuciones también). Funciona igual con la mayoría de las aplicaciones que he usado hasta ahora. Es decir, cerrará todas las ventanas de una aplicación en ejecución.

Dan
fuente
Deshacer mi voto, ya que no puedo confirmar que Ctrl+Qrealmente lo haga. Si bien el Quitmenú cerró todas las ventanas abiertas de Archive Manager, la tecla de acceso directo no hizo lo mismo (al menos en 14.04).
clearkimura
1
@clearkimura No puedo confirmar si se debe al hecho de que estoy usando gnome, o si es por la versión de Ubuntu, pero me funciona en Ubuntu 17.04 (con gnome) que usa la versión 3.22.3 de Archive Manager
Dan