Ich möchte alle Fenster schließen, die auf meinem Desktop angezeigt werden. Ich habe darüber nachgedacht pkill
, aber ich konnte es nur schaffen, sie einzeln zu töten, was ich nicht will. Das Endziel besteht darin, dies in ein Skript zum Ausführen eines Kiosks einzufügen. Es erkennt, ob die Kiosksoftware ausgeführt wird (ich habe diesen Teil herausgefunden). Wenn dies nicht der Fall ist, werden alle geöffneten Fenster getötet und mein System neu gestartet Kiosksoftware.
9
Antworten:
Der einfachste Ansatz verwendet
xdotool
:xdotool search ""
listet jedes Fenster auf.windowkill %@
tötet jeden von ihnen;%@
bezieht sich auf alle Ergebnisse der vorherigen Suche.Sie können es vorziehen , die verwenden
--maxdepth 1
Option , umsearch
die Fenster zu Fenster der obersten Ebene ausgewählt zu begrenzen.quelle
Dies funktioniert zumindest für kde und xfce (Gnom nicht getestet, aber es könnte auch funktionieren):
1) installiere wmctrl
2) Erstellen Sie dann ein Skript mit dem Namen
close_windows.sh
:3) mach es ausführbar:
chmod +x ./close_windows.sh
3) Erstellen Sie im Startmenü einen Eintrag, der auf das Skript close_windows verweist.
4) Führen Sie das Skript close_windows aus diesem Eintrag aus.
Quelle: https://forum.manjaro.org/index.php?topic=4412.0 :
quelle
Michael Homer und Guido van Steen haben Wege aufgezeigt, alle Fenster zu töten. Dies würde Hintergrundprozesse nicht beenden, wenn es welche gibt. Es würde nicht abgestürzte Programme töten, deren Fenster verschwunden ist, die aber immer noch ohne Benutzeroberfläche ausgeführt werden. Sie können es also vorziehen, die Prozesse stattdessen abzubrechen.
Sie können
kill -9 -1
als Nicht-Root-Benutzer ausgeführt werden, um alle Prozesse zu beenden, die als dieser Benutzer ausgeführt werden. Sie müssten die Kiosk-Anwendung als dedizierter Benutzer ausführen (dies ist aus Sicherheitsgründen ohnehin eine Standardkonfiguration für Kioske) und sicherstellen, dass die Kiosk-Schnittstelle neu gestartet wird, wenn alle Prozesse in der Sitzung beendet sind (dies ist auch eine Standardkonfiguration für Kioske). für Robustheit).quelle
Guidos Antwort funktioniert perfekt für mich. Ich habe einen kleinen Linux / Windows-Cross-Compilable-Pascal-Prog geschrieben, der mit Lazarus / FPC für meinen eigenen Gebrauch kompiliert wurde und seinen Befehl wmctrl oder den entsprechenden Powershell-Windows-Befehl startet:
Mir ist auch aufgefallen, dass Diego mit dem Desktop-Namen Recht hat und meine ausführbare Linux-Datei nur in einer französischen xfce-Umgebung mit dem Desktop "Bureau" funktioniert. Ich konnte den Desktop-Namen in den Umgebungsvariablen nicht finden (und die Mühe hat sich nicht gelohnt).
quelle