Otwórz już działający program przez terminal

10

Jak przejść do już działającego programu za pomocą terminala?

Na przykład:

firefox otwiera nowe okno Firefoksa.

Czy istnieje polecenie, które skupi już otwarte okno Firefoksa?

Kunok
źródło
1
W oparciu o zaakceptowaną odpowiedź, myślę, że chciałeś skoncentrować istniejące okno, a nie otwierać nowe okno. Przesłałem zmianę w celu wyjaśnienia, ale oczekuje ona na sprawdzenie.
jpaugh,

Odpowiedzi:

14

Jako jedna linijka

Zakładając, że masz zainstalowany wmctrl (uruchomsudo apt-get install wmctrl jeśli nie):

Komenda:

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

Podniosłbym ostatni otwartygedit okno. Zastąp go dowolną inną aplikacją.

Wyjaśnienie

pgrep gedit

dostaje pid gedit

wmctrl -lp

wyświetla wszystkie okna i pid, do którego należą

awk '{ print $1 }'

dzieli identyfikator okna (pierwszy ciąg w linii)

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

dlatego znajduje identyfikator okna ostatnio utworzonego okna gedit(wynik wmctrl -lplisty wyświetla okna w chronologicznej kolejności tworzenia, jeśli aplikacja ma wiele okien, tail -1zwraca ostatnie).

wmctrl -ia

następnie podnosi okno o jego window-id

W małym skrypcie

... do uruchomienia z aplikacją jako argumentem:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Zapisz go w pustym pliku jako switchto.sh
  • Zrób to
  • Uruchom jako (np.)

    /path/to/switchto.sh firefox
    

Alternatywy?

Teoretycznie polecenie:

xdotool search --class gedit windowactivate

powinien zrobić to samo; w tym przypadku powinno pojawić się pierwsze znalezione okno gedit.
Wydaje się jednak mniej odporny. W moim systemie (Unity) nic nie zrobił.

Jacob Vlijm
źródło
1

Jeśli korzystasz z firefoxa firefox &, możesz jobszobaczyć jego numer. Aby przenieść go na pierwszy plan, napisz, %n firefoxco noznacza jego liczbę. Przykład:

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

Możesz także „zabić” program:

sabrina@ubuntu:~$ kill %1
Sabrina Spelman
źródło