Unix hat nicht gerade ein Konzept von "Anwendung" . Anstatt Prozesse zu verwenden, sind Fenster auf oberster Ebene ein besserer Indikator. Sie sind leichter genau zu erkennen, und Sie werden nicht fälschlicherweise Anwendungen eines anderen Benutzers erkennen.
Jedes Fenster hat eine Klasse, die seine Anwendung identifiziert. Führen Sie den folgenden Befehl in einem Terminal aus, und klicken Sie auf das Fenster der Anwendung, um den Klassennamen für eine Anwendung anzuzeigen:
xprop WM_CLASS
Daraufhin werden zwei Zeichenfolgen angezeigt: der Instanzname und der Klassenname.
Die nützlichsten Tools zum Anzeigen von Informationen zu Fenstern und zum Ausführen einiger grundlegender Aktionen sind xdotool
und wmctrl
.
Mit wmctrl
, können Sie mit wmctrl -F -x -a "$instance.$class"
einem der Fenster mit dem angegebenen Instanz und Klasse aktivieren. Wenn es kein passendes Fenster wmctrl
gibt, wird ein Fehlerstatus zurückgegeben, sodass Sie das Programm starten können. Beispiel:
wmctrl -F -x -a Navigator.Firefox || firefox &
Der äquivalente Befehl xdotool:
xdotool search --class --maxdepth 2 Firefox windowactivate || firefox &
Wenn es mehrere Toplevel-Fenster gibt, gibt es keine einfache Möglichkeit, zu bestimmen, welches aktiviert wird. Um den neuesten zu aktivieren, benötigen Sie die Zusammenarbeit Ihres Fenstermanagers - Openbox standardmäßig in LXDE. Ich bin nicht mit Openbox vertraut, aber es ist ziemlich schlank, so dass es möglicherweise keine Möglichkeit bietet, das zuletzt aktivierte Fenster zu melden. Ich denke, LXDE kann mit anderen Fenstermanagern wie Sawfish verwendet werden, die programmierbar sind, sodass Sie diese Funktionalität in den Fenstermanagern in wenigen Codezeilen codieren können.
Verwenden Sie den Mechanismus zur Einstellung der Schlüsselbindung Ihres Fenstermanagers , um die gewünschten Schlüssel an einen dieser Befehle zu binden.