Wenn ich eine Anwendung in einer grafischen Umgebung ausführe und sie schließen möchte, klicke ich normalerweise X
in die obere linke Ecke des Fensters oder gehe zu File > Close
.
Ich möchte diese Programme manchmal über ssh vom Terminal aus über die Befehlszeile aus der Ferne schließen. Jetzt verwende ich den kill
Befehl, aber ich frage mich, dass dies genauso funktioniert wie das ordnungsgemäße Beenden der Anwendung von sich aus.
Das man kill
Standardsignal scheint 15) SIGTERM zu sein. Wird dieses Signal der Anwendung mitteilen, die ich schließen möchte, um zu bereinigen, geöffnete Dateien zu schließen und Inhalte zu speichern?
Gibt es einen besseren Weg, wenn ich es vom Terminal aus machen möchte?
command-line
Mike
quelle
quelle
Antworten:
Die typische Art und Weise zu schließen Anwendung ist ordnungsgemäß zu verwenden
kill -TERM 1234
, wo1234
die PID des Fensters ist. Das Problem ist jedoch, dass grafische Anwendungen so konzipiert sind, dass sie auf ein bestimmtes Signal vom X-Server selbst warten und nicht auf dasTERM
Signal warten.Das bedeutet, dass Sie eine Art Agent zwischen Ihnen und dem X-Server benötigen, um zu kommunizieren, dass Sie das entsprechende Signal senden möchten. Sie können natürlich ein C-Programm schreiben, aber es gibt bereits ein
wmctrl
Programm (nicht überraschend in C geschrieben), das genau das tut.Die Verwendung von
wmctrl
ist einfach:Es ist nicht standardmäßig installiert, also holen Sie es sich mit
sudo apt-get install wmctrl
Es gibt viele Verwendungsmöglichkeiten, die
wmctrl
weit über das Schließen von Fenstern hinausgehen. Weitere Beispiele für Skripte, in denen sie verwendet wurden, finden Sie in meinen Antworten und in denen von Jacob Vlijmquelle
wmctrl -l
alle Fenster aufgelistet werden und geben Sie die numerische ID in der ersten Spalte in hexadezimaler Form an. =)Minimize to tray on close
undwmctrl -c
wird nur in der Nähe eines Fensters, nicht die Anwendung selbst, wird es bleiben , um Leiste minimiert läuft.Ich denke, es lohnt sich hinzuzufügen, um
wmctrl -xl
Ergebnisse wie diese auszugeben:Wo die
x
das Fenster fordert Klasse in der Ausgabe zu sein. Dies ist oft die einfachste Möglichkeit, jedes Mal dasselbe Programm zu schließen. Dann können wir beim Schließen einfach die Fensterklasse angeben:In diesem Beispiel wird Speedcrunch geschlossen.
quelle