Quiero cerrar todas las ventanas que aparecen en mi escritorio. He pensado en hacerlo pkill
, pero solo pude matarlos uno a la vez, que no es lo que quiero. El objetivo final es poner esto en una secuencia de comandos para ejecutar un quiosco, detectará si el software del quiosco se está ejecutando (descubrí esta parte) y si no es así, matará cualquier ventana que esté abierta y reiniciará mi software de quiosco.
9
Respuestas:
El enfoque más simple utiliza
xdotool
:xdotool search ""
enumera todas las ventanas.windowkill %@
mata a cada uno de ellos;%@
se refiere a todos los resultados de la búsqueda anterior.Es posible que prefiera utilizar la
--maxdepth 1
opción parasearch
limitar las ventanas seleccionadas a las ventanas de nivel superior.fuente
esto funciona al menos para kde y xfce (gnome no probado, pero podría funcionar también):
1) instalar wmctrl
2) luego crea un script llamado
close_windows.sh
:3) hazlo ejecutable:
chmod +x ./close_windows.sh
3) cree una entrada en el menú de inicio que apunte al script close_windows.
4) ejecute el script close_windows desde esta entrada.
fuente: https://forum.manjaro.org/index.php?topic=4412.0 :
fuente
Michael Homer y Guido van Steen han mostrado formas de matar todas las ventanas. Esto no mataría los procesos en segundo plano, si hay alguno. No mataría a los programas bloqueados cuya ventana se ha ido, pero que todavía se están ejecutando sin una interfaz de usuario. Por lo tanto, puede preferir matar los procesos en su lugar.
Puede ejecutarse
kill -9 -1
como usuario no root para eliminar todos los procesos que se ejecutan como ese usuario. Debería ejecutar la aplicación de kiosco como un usuario dedicado (de todos modos, esa es una configuración estándar para los kioscos, por seguridad) y para asegurarse de que la interfaz del kiosco se reinicie cuando todos los procesos de la sesión estén inactivos (que también es una configuración estándar para los kioscos, para robustez).fuente
La respuesta de Guido funciona perfectamente para mí. Escribí un pequeño programa Pascal de compilación cruzada de Linux / Windows compilado con Lazarus / FPC para mi propio uso, que lanza su comando wmctrl, o el comando equivalente de Windows Powershell:
También noté que Diego tiene razón sobre el nombre del escritorio, y mi ejecutable de Linux solo funcionaría en un entorno francés xfce con el escritorio llamado "Bureau". No pude encontrar el nombre del escritorio en las variables de entorno (y no valió la pena).
fuente