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?
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?
Odpowiedzi:
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ą.
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
... do uruchomienia z aplikacją jako argumentem:
#!/bin/bash
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
switchto.shUruchom jako (np.)
/path/to/switchto.sh firefox
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ł.
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