Saltar al contenido

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

Siéntete libre de divulgar nuestro sitio y códigos en tus redes, apóyanos para aumentar nuestra comunidad.

Solución:

Desde la línea de comando:

killall file-roller

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

Otro enfoque sería utilizar el wmctrl utilidad (control del administrador de ventanas). Esto se puede usar para decirle al administrador de ventanas que simule que usted hizo clic en el botón de cerrar. Esto evita la naturaleza potencialmente pesada de killall; por ejemplo, algunos programas con un documento no guardado se cerrarán inmediatamente cuando se eliminen (incluso suavemente), mientras que al hacer clic en el botón de cerrar aparece un mensaje “¿Desea guardar?” inmediato.

El comando básico es wmctrl -c WINDOWTITLEpor lo que en este caso wmctrl -c "Archive Manager" (asumiendo que no tiene un archivo abierto: eso cambia el título). Desafortunadamente, solo 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 debemos dormir un poco para evitar enviar continuamente una secuencia de comandos de cierre a la primera ventana que ya está ocupada cerrándose, lo que puede causar un error que detiene el ciclo.

Esto es simple y generalmente funciona, pero dormir una cantidad determinada de tiempo y esperar que se cierre una ventana antes de volver a intentarlo es una forma complicada y lenta de evitar el error. Lo que realmente queremos hacer es enviar inmediatamente 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 (la grep comando), extraiga solo el id de la ventana (el cut comando) y llamar wmctrl -i -c para cada uno. los -i es necesario 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 simplemente escribir cada vez que un gato pisa su teclado, pero espero que sea una técnica útil para mantener en su caja de herramientas de secuencias de comandos.

Si te ha resultado de provecho este artículo, sería de mucha ayuda si lo compartieras con otros seniors de esta forma nos ayudas a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *