44

Есть ли способ, в командной строке bash, чтобы сосредоточиться на конкретном окне запущенного процесса. Предположим, я знаю имя процесса, номер и все, что мне нужно.

Например, если у меня запущен единственный экземпляр Firefox, но он свернут (или поверх него есть какое-то другое окно). Мне нужна команда bash, которая вызывает и фокусирует окно Firefox, делая его активным окном.

3 ответа3

72

Команда wmctrl, кажется, делает эту работу. Он уже был установлен для меня, но он доступен в репозиториях на тот случай, если это кому-нибудь понадобится.

wmctrl -l 

Списки в настоящее время открытых окон (включая панели гномов).

wmctrl -a STRING

Дает фокус окну, содержащему STRING в его заголовке. Я не уверен, что произойдет, если более одного окна соответствует этому условию.
В моем случае команда была:

wmctrl -a Firefox
8

Используя wmctrl в сочетании с xdotool вы можете переключить фокус на Firefox и затем выполнять действия клавиатуры или мыши.

В этом примере:

wmctrl -R firefox && \
  xdotool key --clearmodifiers ctrl+t ctrl+l && \
  xdotool type --delay=250 google && \
  xdotool key --clearmodifiers Tab Return

Следующие шаги выполняются:

  1. Сделайте акцент на первом соответствующем окне Firefox
  2. Откройте новую вкладку браузера
  3. Ставит фокус в адресной строке
  4. Типа "Google"
  5. Вкладка к первому результату автозаполнения браузера
  6. Нажмите клавишу возврата (или ввода)
3

Как ниже сценарий, который я использую в моем Ubuntu ПК? Вариант использования такой.

   $ ./focus_win.sh 1            # focus on a application window that executed at first
   $ ./focus_win.sh 2            # second executed application window

Я использую его после назначения его в пользовательском сочетании клавиш. Ctrl +1, Ctrl +2, ...

кошка focus_win.sh

#! /bin/sh

if [ "" = "$1" ] ; then
    echo "usage $0 <win index>"
    exit 1;
fi

WIN_ID=`wmctrl -l | cut -d ' ' -f1 | head -n $1 | tail -n 1`

if [ "" = "$WIN_ID" ] ; then
    echo "fail to get win id of index $1"
    exit 1;
fi
wmctrl -i -a $WIN_ID

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .