IT Notes

Настройка Openbox: Закрепление окон

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

Подобную настройку мы использовали для терминала sakura. Ее нужно было вставить в файл ~/.config/openbox/rc.xml в раздел <applications>. Сама настройка определялась следующим xml-кодом:

<application name="sakura" type="normal">
  <desktop>1</desktop>
  <maximized>yes</maximized>
  <focus>yes</focus>
  <layer>below</layer>
</application>

Мы уже разбирались, что означают различные опции из фрагмента выше, поэтому здесь я повторять их расшифровку не буду. Главное, что для нас сейчас имеет значение, - терминал оказывается закреплен за первым рабочим столом. Однако это не означает, что мы не сможем перенести его на другой рабочий стол. Но он всегда будет появляться при запуске именно там.

Но не спешите закреплять все приложения как попало. Сначала подумайте. Например, я распределил рабочие столы по их функциональному наполнению:

  1. Рабочий стол 1 - терминал, который я использую не только для выполнения команд, но и в качестве файлового менеджера (см. Десять советов для эффективного использования Midnight Commander);
  2. Рабочий стол 2 - браузер;
  3. Рабочий стол 3 - клиент мгновенных сообщений и электронная почта;
  4. Рабочий стол 4 - интегрированная среда разработки;
  5. Рабочий стол 5 - графический редактор.

Собираем информацию об окнах

По аналогии с терминалом закрепим браузер на втором рабочем столе, добавив следующий xml-код в ~/.config/openbox/rc.xml:

<application class="Chromium" role="browser">
  <desktop>2</desktop>
  <focus>yes</focus>
  <maximized>yes</maximized>
  <layer>below</layer>
</application>

Обратите внимание, что для идентификации окна приложения можно использовать атрибуты class, role, type и другие. Узнать эти значения можно с помощью утилиты xprop. Запустите ее в консоли, а затем щелкните на окне, для которого хотите получить информацию.

Для запуска chromium я использую комбинацию клавиш Win + b:

<keybind key="W-b">
  <action name="Execute">
    <command>find_app.sh chromium</command>
  </action>
</keybind>

Приложения с множеством окон

В качестве клиента мгновенных сообщений я использую pidgin. Возможно, вам это приложение и не понадобится, но на его примере рассмотрим одну интересную особенность: не будем максимизировать его размер. Закрепим его следующим образом:

<application class="Pidgin">
  <desktop>3</desktop>
  <layer>below</layer>
  <position force="yes">
    <x>+0</x>
    <y>+0</y>
  </position>
</application>

<application class="Pidgin" role="conversation">
  <desktop>3</desktop>
  <layer>below</layer>
  <position force="yes">
    <x>+15%</x>
    <y>+0</y>
  </position>
</application>

Определение состоит из двух частей. В первой мы говорим, что хотим, чтобы pidgin был закреплен на 3-ем рабочем столе к левому верхнему краю. Это определение будет относиться к любым всплывающим диалоговым окнам приложения. Но для окна с ролью conversation используем особую конфигурацию, сдвинув его вправо. В результате окно беседы не перекрывает список собеседников:

pidgin-icq-thumbnail

Этот прием вы можете использовать для любых многооконных приложений.

Для запуска pidgin я использую комбинацию клавиш Win + p:

<keybind key="W-p">
  <action name="Execute">
    <command>find_app.sh pidgin</command>
  </action>
</keybind>

Закрепление окна на конкретном мониторе

Приложение для работы с электронной почтой я также закрепил на 3-ем рабочем столе, но на втором мониторе:

<application class="Thunderbird">
  <maximized>yes</maximized>
  <desktop>3</desktop>
  <layer>below</layer>
  <position force="yes">
    <monitor>2</monitor>
    <x>+0</x>
    <y>+0</y>
  </position>
</application>

Если у вас только один монитор, то советую задуматься о подключении второго. Это может сильно увеличить вашу продуктивность (см. Пять способов повышения продуктивности для программиста).

Для thunderbird я использую комбинацию Win + k:

<keybind key="W-k">
  <action name="Execute">
    <command>find_app.sh thunderbird</command>
  </action>
</keybind>

Переходящие между рабочими столами окна

Но не для всех приложений подходит жесткая привязка. Например, при использовании gmrun уместен "плавающий" режим. Сам gmrun - лончер других приложений. Вполне естественно ожидать, что если запустить его на 1-ом рабочем столе, а затем перейти на 2-ой, то он не останется на 1-ом, а последует за вами. Вот как это сделать:

<application name="gmrun">
  <desktop>all</desktop>
  <layer>above</layer>
  <position force="yes">
    <x>center</x>
    <y>center</y>
  </position>
</application>

Для запуска самого лончера также обязательно нужно выделить комбинацию клавиш. Я использую Win + ]:

<keybind key="W-0x23">
  <action name="Execute">
    <command>find_app.sh gmrun</command>
  </action>
</keybind>

Внешний вид gmrun:

gmrun-thumbnail

Выпадающая консоль

Периодически возникают ситуации, когда терминал нужен здесь и сейчас, а не на первом рабочем столе (или каком-то конкретном). В этом случае подойдет выпадающая консоль. Я для этого использую приложение tilda. В его настройках я выбрал комбинацию клавиш Win + g для "выпадания", а в rc.xml закрепил его на втором мониторе в левом верхнем углу:

<application name="tilda">
  <position force="yes">
    <monitor>2</monitor>
    <x>+0</x>
    <y>+0</y>
  </position>
</application>

При этом tilda сама перемещается при переходе с одного рабочего стола на другой, поэтому от нас никаких дополнительных действий не требуется.

Например, так выглядит tilda с эффектом прозрачности над firefox:

tilda-over-firefox-thumbnail

Заключение

Мы рассмотрели основные возможности привязки окон в среде Openbox. Распределите свои приложения по связанным группам, и закрепите их по соответствующим рабочим столам. А если приложение не относится к какой-то конкретной группе, то сделайте его "плавающим".

В следующий раз мы поработаем над визуальной частью - займемся оформлением Openbox

Похожие публикации

Комментарии

Не мешало бы добавить скриншоты.

Алексей:

Не мешало бы добавить скриншоты.

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