Je souhaite fermer toutes les fenêtres apparaissant sur mon bureau. J'ai pensé à le faire pkill
, mais je n'ai réussi qu'à les tuer un à la fois, ce qui n'est pas ce que je veux. L'objectif final est de mettre cela dans un script pour exécuter un kiosque, il détectera si le logiciel du kiosque est en cours d'exécution (j'ai compris cette partie) et si ce n'est pas le cas, il tuera toutes les fenêtres ouvertes et redémarrera mon logiciel de kiosque.
9
Réponses:
L'approche la plus simple utilise
xdotool
:xdotool search ""
répertorie toutes les fenêtres.windowkill %@
tue chacun d'eux;%@
fait référence à tous les résultats de la recherche précédente.Vous pouvez préférer utiliser l'
--maxdepth 1
option poursearch
limiter les fenêtres sélectionnées aux fenêtres de niveau supérieur.la source
cela fonctionne au moins pour kde et xfce (gnome non testé, mais cela pourrait aussi fonctionner):
1) installez wmctrl
2) puis créez un script appelé
close_windows.sh
:3) rendez-le exécutable:
chmod +x ./close_windows.sh
3) créez une entrée dans le menu de démarrage qui pointe vers le script close_windows.
4) exécutez le script close_windows à partir de cette entrée.
source: https://forum.manjaro.org/index.php?topic=4412.0 :
la source
Michael Homer et Guido van Steen ont montré des moyens de tuer toutes les fenêtres. Cela ne tuerait pas les processus d'arrière-plan, s'il y en a. Cela ne tuerait pas les programmes en panne dont la fenêtre a disparu mais qui s'exécutent toujours sans interface utilisateur. Vous préférerez peut-être plutôt tuer les processus.
Vous pouvez exécuter en
kill -9 -1
tant qu'utilisateur non root pour tuer tous les processus qui s'exécutent en tant que cet utilisateur. Vous devez exécuter l'application kiosque en tant qu'utilisateur dédié (c'est une configuration standard pour les kiosques de toute façon, pour des raisons de sécurité) et vous assurer que l'interface du kiosque redémarre lorsque tous les processus de la session sont morts (qui est également une configuration standard pour les kiosques, pour la robustesse).la source
La réponse de Guido fonctionne parfaitement pour moi. J'ai écrit un petit prog Pascal Pascal compilable Linux / Windows compilé avec Lazarus / FPC pour mon propre usage, qui lance sa commande wmctrl, ou la commande équivalente windows Powershell:
J'ai également remarqué que Diego avait raison sur le nom du bureau, et mon exécutable Linux ne fonctionnerait que sur un environnement xfce français avec le bureau nommé "Bureau". Je n'ai pas pu trouver le nom du bureau dans les variables d'environnement (et cela ne valait pas la peine).
la source