Gnome (Ubuntu): как вывести окно программы на передний план с помощью командной строки из терминала?


14

У меня есть определенная рабочая среда с десятками открытых Windows. Как я могу вывести на передний план окно с известным именем / названием программно или с помощью командной строки?

Ответы:


12

Раньше я использовал wmctrl -a <name>, который отлично работает, но недавно перешел на xdotool, например:

xdotool search --name <name-or-regex-for-name> windowraise

У этого есть много других особенностей также.

Установить:

sudo apt-get install xdotool


5
xdotool windowraiseпереносит окно вперед, но не фокусирует окно и не переключается на рабочий стол с окном. вместо windowactivateэтого сделаю все три.
jozxyqk

6

Что ж, после sudo apt-get install wmctrl-ing вы можете поиграть с этим скриптом bash:

#! /bin/bash

WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird

# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:

if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0

Который я нашел здесь


4
Нет необходимости в скобках и кавычках:if ! wmctrl -l | grep -q "$WINTITLE"
Приостановлено до дальнейшего уведомления.

wmctrlесть -iопция, которая поддерживает работу с окном с его шестнадцатеричным идентификатором. И так вы можете сделать это wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai- что бы сделать что-то подобное
vlad-ardelean

0

При использовании xdotoolкажется трудным выдвинуть все окна для данного приложения или класса, используя только одну команду. Я получаю лучшие результаты, оборачивая его в forцикл на уровне оболочки. Используя Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Несколько замечаний:

  • По умолчанию xdotool searchбудет искать шаблон (здесь Firefox) по имени окна, классу и имени класса. Если вы хотите , чтобы ограничить область поиска, используйте соответствующие --class, --nameили --classnameварианты.
  • --desktop 0Опция ограничивает поиск первого рабочего стола. Похоже, это обходной путь, позволяющий избежать XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)упоминания в некоторых комментариях.
  • На момент написания этой статьи xdotoolпроект остановился с 2015 года. Он по-прежнему остается моим инструментом выбора. По личным причинам Джордан Сиссел (первоначальный автор) не так активен, как в прошлом, поэтому не стесняйтесь вносить свой вклад в проект.


Это копия ответа, который я разместил на AskUbuntu , но я думаю, что он не зависит от Linux, поэтому он может быть полезен и здесь.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.