Как программно переключиться на определенное окно в compiz?

Есть ли команда, чтобы сообщить compiz, что мы хотим вывести его на передний план и установить фокус на определенное окно? Как мы должны идентифицировать окно в этой команде?

Причина этого вопроса заключается в следующем примере использования:

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

Я знаю, что ALT + TAB переключается между двумя последними используемыми окнами, но не может поддерживать более сложные комбинации приложений. Например, Браузер+Eclipse+Вики

Если есть команда, подобная описанной, к ней легко добавить ярлык из интерфейса KDE или GNOME.


person FossilBit    schedule 04.01.2010    source источник
comment
Не могли бы вы добавить к этому вопросу тег [window-managers]. Спасибо.   -  person vo1stv    schedule 15.05.2012


Ответы (5)


Вам нужен wmctrl. Например, добавьте сочетание клавиш для вызова такой команды, как

wmctrl -Fa 'Wiki - Google Chrome'

чтобы поднять и активировать окно с таким заголовком.

Существуют различные способы выбора окна по заголовку, идентификатору и т. д. См. man wmctrl. Список окон можно получить запустив

$ wmctrl -l

Я не пробовал это с compiz, но wmctrl должен работать с любым оконным менеджером, совместимым с EWMH.

person Diego Torres Milano    schedule 05.01.2010
comment
Просто примечание: опция wmctrl -F заставляет искать точное совпадение в заголовке окна. В противном случае это просто поиск подстроки (что может лучше подходить для некоторых целей). - person rburny; 23.03.2013

Это сработало для меня с Compiz:

xdotool windowactivate `xdotool search --onlyvisible --class firefox`
person dave1010    schedule 06.01.2011
comment
У меня только что работало под Ubuntu 12.04 с Unity, а wmctrl - нет. Спасибо! - person Jeff Ward; 12.03.2013
comment
Вам не нужны две отдельные команды xdotool; вы можете использовать %1 для ссылки на первый результат поиска или %@ для ссылки на все из них: xdotool search --onlyvisible --class firefox windowactivate %@ - person Don Hatch; 10.06.2016

Вы захотите отправить сообщение клиента _NET_ACTIVE_WINDOW в корневое окно. Это предупредит любой совместимый оконный менеджер (включая Compiz) о том, что вы запрашиваете активацию определенного окна.

См. спецификацию EWMH, особенно раздел _NET_ACTIVE_WINDOW.

Обратите внимание, что в зависимости от конфигурации оконного менеджера он может отказать в выполнении вашего запроса или дать пользователю возможность проигнорировать его.

person Adam Goode    schedule 05.01.2010

Я нашел эта веб-страница, на которой есть пример исходной программы, которую вы можете скомпилировать и которая выведет окно X на передний план.

Ключом является функция X11 XRaiseWindow.

Я предполагаю, что было бы довольно легко написать небольшую программу и либо написать сценарий-оболочку, либо просто сделать саму программу надежной, а затем настроить Compiz для присоединения этого к глобальному сочетанию клавиш.

person Dave    schedule 05.01.2010

Плагин Widget может делать то, что вы описываете.

  • Настройте подключаемый модуль виджета, чтобы пометить нужные окна как виджеты (например, путем сопоставления заголовка или роли окна).
  • Настройте подключаемый модуль Window Rules, чтобы окна виджетов присутствовали во всех рабочих областях (прикреплялись) и пропускали панель задач.

См. http://wiki.compiz.org/Plugins/Widget.

person Jean Jordaan    schedule 14.07.2015