Откройте уже запущенную программу через терминал

10

Как переключиться на уже запущенную программу с помощью терминала?

Например:

firefox открывает новое окно Firefox.

Есть ли команда, которая будет фокусировать уже открытое окно Firefox?

Kunok
источник
1
Основываясь на принятом ответе, я думаю, что вы хотели сфокусировать существующее окно, а не открывать новое окно. Я внес изменения, чтобы уточнить, но они ожидают рассмотрения.
jpaugh

Ответы:

14

Как один лайнер

Предполагая, что у вас установлен 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) он вообще ничего не делал.

Якоб Влейм
источник
1

Если вы запустили Firefox с помощью firefox &вы можете использовать, jobsчтобы увидеть его номер. Чтобы вывести его на передний план, напишите, %n firefoxчто nозначает его номер. Пример:

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

Также вы можете «убить» программу:

sabrina@ubuntu:~$ kill %1
Сабрина Спельман
источник