Wie kann man einen Startbefehl auf eine bereits laufende App-Instanz in Ubuntu / Linux setzen?

5352
David

Ich verwende ein Programm namens easystroke, um Befehle aus Mausgesten aufzurufen - normalerweise, um eine Anwendung zu starten. 'gnome-terminal' zum Beispiel. Wenn ich bereits ein Gnome-Terminal-Fenster geöffnet habe und die Gnome-Terminal-Geste aufrufen möchte, möchte ich den Fokus auf die bereits laufende Instanz richten, anstatt eine neue Instanz zu erzeugen, was natürlich jetzt geschieht. (Ich interessiere mich eher für diese Verknüpfung mit meiner Google Mail-Chrome-App und für andere größere Apps.)

Ich bin in Ubuntu und Linux im Allgemeinen sehr neu, aber ich hatte gehofft, es könnte einen geschickten Befehl geben, den ich um meinen Startbefehl wickeln könnte, der dieses Verhalten hervorrufen würde. (Ich stelle mir eine Art Singleton-App-Listen-Keeper-Programm vor, das meine Befehlszeile verbraucht, prüft, ob es bereits in der Liste enthalten ist, den Fokus auf den laufenden Prozess überträgt, wenn dies der Fall ist (und wenn dieser Prozess noch läuft), oder ein anderer erzeugt Neuer Prozess und fügt ihn der Liste mit der Befehlszeile als Schlüssel hinzu.)

4

4 Antworten auf die Frage

1
DaveParillo

Ein Shell-Skript, das pidof und wmctrl verwendet . Sie sind sich nicht sicher, wie Ihr Mausgestenprogramm funktioniert. Können Sie ein Shellskript definieren, das als Ergebnis einer Geste ausgeführt werden soll?

Wenn dies der Fall ist, kann ein solches Skript mithilfe von pidof feststellen, ob das Programm ausgeführt wird. Wenn dies der Fall ist, verwenden Sie wmctrl, um es zu aktivieren. Andernfalls starten Sie es. pidof ist standardmäßig auf Ubuntu vorhanden, aber Sie müssen wmctrl selbst hinzufügen. Suchen Sie wmctrlim Synaptic Package Manager.

1
Justin Smith

xwit "Programmname" bringt ein Fenster nach Namen in den Vordergrund. Alles, was unter Linux eine ausführbare Datei verwenden kann, kann ein #! / Bin / sh-Skript mit aktivierten Ausführungsberechtigungen verwenden. xwit kann auch den Mauszeiger bewegen, das Fenster verschieben, die Größe des Fensters ändern, eine Liste von Fensternamen angeben, die einem Muster entsprechen, eine eindeutige Fenster-ID für ein bestimmtes Fenster erhalten oder ein Fenster schließen ... alles, was Sie mit einem Fenster tun können, können Sie tun mach durch xwit

1
Michael Kropat

Ich habe ein kleines Programm geschrieben, das jumpappgenau zu diesem Zweck aufgerufen wurde. Sie können mit einem Befehl eine neue Anwendung öffnen, wenn Sie sie zum ersten Mal ausführen, und jedes Mal, wenn Sie sie danach ausführen, zum bereits geöffneten Fenster wechseln. Wenn Sie für die Anwendung mehrere Fenster geöffnet haben, durchlaufen die wiederholten Ausführung des Befehls alle Fenster der Anwendung.

Usage: jumpapp [OPTION]... COMMAND [ARG]...  Jump to (focus) the first open window for an application, if it's running. Otherwise, launch COMMAND (with opitonal ARGs) to start the application. 

Unter der Motorhaube, jumpapportet Anwendungsfenster mit zwei Methoden: 1) es alle laufenden pids für COMMAND wird und sucht nach Fenstern mit einem passenden _NET_WM_PID, und 2) es sieht für Fenster mit einem, WM_CLASSdas COMMAND übereinstimmt.

Wenn Sie es ausprobieren möchten, können Sie es einfach von der Quelle oder von meiner PPA installieren:

sudo add-apt-repository ppa:mkropat/ppa sudo apt-get update sudo apt-get install jumpapp 
0
akaihola

Vor einigen Jahren habe ich eine kleine Anwendung namens mcgr für diesen Zweck erstellt. Ursprünglich funktionierte es nur mit dem Metacity-Fenstermanager, aber später habe ich ihn für Gnome angepasst.