Как переключиться на уже запущенную программу с помощью терминала?
Например:
firefox открывает новое окно Firefox.
Есть ли команда, которая будет фокусировать уже открытое окно Firefox?
Как переключиться на уже запущенную программу с помощью терминала?
Например:
firefox открывает новое окно Firefox.
Есть ли команда, которая будет фокусировать уже открытое окно Firefox?
Ответы:
Предполагая, что у вас установлен wmctrl (запустите, sudo apt-get install wmctrlесли нет):
Команда:
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"
Поднял бы последнее открытое geditокно. Замените его любым другим приложением.
pgrep gedit
получает удовольствие от Gedit
wmctrl -lp
перечисляет все окна и pid, к которому они принадлежат
awk '{ print $1 }'
разделяет идентификатор окна (первая строка в строке)
$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')
поэтому находит идентификатор окна последнего созданного окна gedit(вывод wmctrl -lpсписка окон в хронологическом порядке создания, если приложение имеет несколько окон, tail -1возвращает последнее).
wmctrl -ia
впоследствии поднимает окно своим window-id
... для запуска с приложением в качестве аргумента:
#!/bin/bash
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
switchto.shЗапустите его как (например)
/path/to/switchto.sh firefox
Теоретически команда:
xdotool search --class gedit windowactivate
должен делать (вроде) то же самое; в этом случае должно появиться первое найденное окно gedit.
Это кажется менее надежным, однако. На моей системе (Unity) он вообще ничего не делал.
Если вы запустили Firefox с помощью firefox &вы можете использовать, jobsчтобы увидеть его номер. Чтобы вывести его на передний план, напишите, %n firefoxчто nозначает его номер. Пример:
sabrina@ubuntu:~$ jobs
[1]+ Stopped firefox
sabrina@ubuntu:~$ fg %1
Также вы можете «убить» программу:
sabrina@ubuntu:~$ kill %1