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?
źródło
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?
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 -lp
listy wyświetla okna w chronologicznej kolejności tworzenia, jeśli aplikacja ma wiele okien, tail -1
zwraca 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.sh
Uruchom 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 jobs
zobaczyć jego numer. Aby przenieść go na pierwszy plan, napisz, %n firefox
co n
oznacza jego liczbę. Przykład:
sabrina@ubuntu:~$ jobs
[1]+ Stopped firefox
sabrina@ubuntu:~$ fg %1
Możesz także „zabić” program:
sabrina@ubuntu:~$ kill %1