Öffnen Sie das bereits laufende Programm über das Terminal

10

Wie wechsle ich über das Terminal zu einem bereits laufenden Programm?

Zum Beispiel:

firefox öffnet ein neues Firefox-Fenster.

Gibt es einen Befehl, der das bereits geöffnete Firefox-Fenster fokussiert?

Kunok
quelle
1
Aufgrund der akzeptierten Antwort wollten Sie ein vorhandenes Fenster fokussieren und kein neues Fenster öffnen. Ich habe eine Änderung zur Verdeutlichung eingereicht, die Überprüfung steht jedoch noch aus.
Jpaugh

Antworten:

14

Als Einzeiler

Angenommen, Sie haben wmctrl installiert (ausführen, sudo apt-get install wmctrlwenn nicht):

Der Befehl:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"

Würde das zuletzt geöffnete geditFenster öffnen . Ersetzen Sie es durch eine andere Anwendung.

Erläuterung

pgrep gedit

bekommt die pid von gedit

wmctrl -lp

listet alle Fenster und die PID auf, zu der sie gehören

awk '{ print $1 }'

spaltet die Fenster-ID ab (die erste Zeichenfolge in der Zeile)

$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')

findet daher die Fenster-ID des zuletzt erstellten Fensters von gedit(die Ausgabe von wmctrl -lplistet die Fenster in einer chronologischen Reihenfolge der Erstellung auf, wenn die Anwendung mehrere Fenster hat, tail -1gibt sie das letzte zurück).

wmctrl -ia

anschließend hebt das Fenster durch seine window-id

In einem kleinen Skript

... mit der Anwendung als Argument ausgeführt werden:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Speichern Sie es in einer leeren Datei als switchto.sh
  • Mach es ausführbar
  • Führen Sie es aus als (z.

    /path/to/switchto.sh firefox
    

Alternativen?

Theoretisch der Befehl:

xdotool search --class gedit windowactivate

sollte das Gleiche tun; In diesem Fall sollte das erste gefundene Fenster von geöffnet geditwerden.
Es scheint jedoch weniger robust. Auf meinem System (Unity) hat es überhaupt nichts getan.

Jacob Vlijm
quelle
1

Wenn Sie Firefox mit ausgeführt haben firefox &, können jobsSie dessen Nummer anzeigen . Um es in den Vordergrund zu bringen, schreiben Sie, %n firefoxwas nfür seine Nummer steht. Beispiel:

sabrina@ubuntu:~$ jobs
[1]+ Stopped      firefox
sabrina@ubuntu:~$ fg %1

Sie können das Programm auch "töten":

sabrina@ubuntu:~$ kill %1
Sabrina Spelman
quelle