Openbox (Русский) - ArchWiki

Jump to content
From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Openbox. Дата последней синхронизации: 20 января 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Среда рабочего стола
- Экранный менеджер
- Функциональность файлового менеджера
- Меню Xdg
- Oblogout (Русский)
- Оконный менеджер

Openbox — это лёгкий и гибкий в настройке стековый оконный менеджер, поддерживающий большинство стандартных функций. Он может как запускаться независимо в качестве основы уникальной среды рабочего стола, так и использоваться в существующих средах рабочего стола, таких как KDE и Xfce, в качестве альтернативы предоставляемым ими оконным менеджерам. На Openbox построена среда рабочего стола LXDE.

## Установка

Установите пакет openbox. Также установите какие-нибудь TTF-шрифты, например ttf-dejavu и ttf-liberation.

## Запуск

### Автономно

Выполните команду `openbox` или `openbox-session` через xinit. Имейте в виду, что только с `openbox-session` доступен #Автозапуск приложений.

Примечание: После запуска будет просто серый экран. Нажмите правую кнопку мыши по экрану — это вызовет меню Openbox и продемонстрирует, что всё успешно запустилось и работает.

### В других средах рабочего стола

Примечание:

- При замене оконного менеджера, родного для среды рабочего стола, на Openbox имейте в виду, что Openbox не имеет никаких эффектов, связанных с композитингом (например, прозрачность). Смотрите #Эффекты композитинга.
- Openbox может работать с приложениями GNOME (но смотрите GTK (Русский)#Клиентские декорации). [1]

Смотрите Среда рабочего стола#Использование стороннего оконного менеджера.

## Настройка

Примечание: Локальные файлы конфигурации всегда перекрывают глобальные.

Основу конфигурации openbox составляют четыре файла, каждый из которых выполняет свою уникальную роль: `rc.xml`, `menu.xml`, `autostart` и `environment`. Перед настройкой нужно создать локальный профиль Openbox (то есть специфичный для вашей учётной записи). Это можно сделать путём копирования глобального профиля `/etc/xdg/openbox` (который применяется для всех пользователей) в свой каталог настроек:

    $ mkdir -p ~/.config/openbox
    $ cp -a /etc/xdg/openbox/ ~/.config/

### rc.xml

Совет: Пользовательские сочетания клавиш должны добавляться в раздел `<keyboard>` этого файла и под заголовком `<!-- Keybindings for running aplications -->`.

`~/.config/openbox/rc.xml` — это основной файл конфигурации, отвечающий за определение поведения и настроек всего сеанса, в том числе:

- Сочетания клавиш (например, запуск приложений; регулировка громкости)
- Темы оформления
- Настройки рабочего стола и виртуального рабочего стола
- Настройки окна приложения

Этот файл имеет прописанные настройки по умолчанию, так что достаточно лишь немного подредактировать его в соответствии со своими личными предпочтениями.

Примечание: Настройки для каждого приложения, относящиеся к фиксированному размещению приложений на мониторе, будут работать только в том случае, если также были определены положения x и y.

### menu.xml

`~/.config/openbox/menu.xml` определяет поведение меню, открывающегося при правом клике по фону. По умолчанию предоставляется статическое меню (которое не обновляется автоматически при установке новых приложений), но можно также использовать динамическое меню, которое будет обновляться автоматически.

Доступные параметры рассматриваются ниже в разделе #Меню.

### Автозапуск приложений

`openbox-session` имеет два механизма автозапуска: XDG Autostart (работает только если установлен пакет python-pyxdg) и свой собственный механизм.

Свой механизм:

- считывает переменные (выполняет source) из `/etc/xdg/openbox/environment`
- считывает переменные из `~/.config/openbox/environment`
- запускает `/etc/xdg/openbox/autostart`
- запускает `~/.config/openbox/autostart`

Проблемы, связанные с выполнением команд в `~/.config/openbox/autostart` не по порядку (или вообще с пропуском выполнения), часто решаются добавлением небольших задержек. Например:

    xset -b
    (sleep 3s && nm-applet) &
    (sleep 3s && conky) &

### environment

Файл `~/.config/openbox/environment` можно использовать для добавления связанных переменных окружения, например:

- Define new pathways (e.g. execute commands that would otherwise require the entire pathway to be listed with them)
- Изменить языковые настройки
- Определить другие переменные, которые будут использоваться (например, здесь можно указать исправление для тем GTK)

### Темы

Установите obconf и/или lxappearance-obconf, которые предоставляют графический интерфейс для настройки внешнего вида Openbox.

Хорошая подборка тем есть в пакете openbox-themesAUR. Некоторые GTK-темы также имеют встроенную поддержку Openbox. Темы устанавливаются в `/usr/share/themes` и доступны к выбору сразу после установки.

box-look.org — превосходный источник тем. deviantART.com — ещё один превосходный источник. Можно найти ещё больше тем в сети.

#### Изменение или создание

Совет: Лучше скопировать тему в домашний каталог вместо того, чтобы редактировать её напрямую в `/usr/share/themes/`. Это оставит оригинал нетронутым, а также не затрёт ваши изменения при обновлении пакетов.

Процесс создания или изменения тем хорошо описан на официальном сайте openbox.org. obthemeAUR предоставляет графический интерфейс для этого.

### Графический интерфейс настроек

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

- ObConf — Инструмент настройки, использующий GTK3.

  http://openbox.org/wiki/ObConf:About || obconf

- LXAppearance ObConf — Плагин для LXAppearance, добавляющий возможность настройки Openbox. В нём реализованы не все возможные настройки, так что вам всё равно может понадобиться obconf.

  https://lxde.org || lxappearance-obconf

- LXInput — Настройка мыши и клавиатуры в LXDE

  https://lxde.org || lxinput

- LXRandR — Настройка мониторов в LXDE

  https://lxde.org || lxrandr

- obkey — Настройка сочетаний клавиш

  https://code.google.com/p/obkey/ || obkeyAUR

- obapps — Инструмент для настройки поведения приложений в Openbox.

  https://sourceforge.net/projects/obapps/ || obappsAUR[ссылка недействительна: package not found]

Программы для редактирования меню описаны ниже в разделе #Меню.

## Перенастройка Openbox

Openbox не всегда автоматически применяет изменения, внесённые в его файлы конфигурации в течение сеанса. Как следствие, необходимо будет вручную перезагрузить эти файлы после того, как они были изменены. Для этого введите следующую команду:

    $ openbox --reconfigure

Если вы хотите прописать сочетание клавиш для этой команды в файле `~/.config/openbox/rc.xml`, достаточно просто указать команду `reconfigure`. Ниже приведён пример с использованием комбинации клавиш `Super`+`F11`:

    <keybind key="W-F11">
      <action name="Reconfigure"/>
    </keybind>

## Сочетания клавиш

Все сочетания клавиш добавляются в файл `~/.config/openbox/rc.xml` под заголовком `<!-- Keybindings for running aplications -->`. Здесь представлено кратное описание, а подробности можно почитать на openbox.org.

Синтаксис добавления сочетания клавиш такой:

    <keybind key="моё-сочетание-клавиш">
      <action name="моё-действие">
        ...
      </action>
    </keybind>

Для выполнения внешней команды используется действие Execute. Синтаксис такой:

    <action name="Execute">
      <command>моя-команда</command>
    </action>

Список всех доступных действий можно посмотреть на the Openbox wiki.

Совет: Инструмент obkeyAUR предоставляет графический интерфейс для настройки сочетаний клавиш. Перед его использованием запустите obconf для создания файла `~/.config/openbox/rc.xml`.

Хотя использование стандартных буквенно-цифровых клавиш не требует пояснений, другим типам клавиш присваиваются специальные имена, например `modifiers`, `multimedia` и `navigation`.

### Модификаторы

Клавиши-модификаторы играют важную роль в сочетаниях клавиш (например, удерживание клавиши `Shift` или `Ctrl` в сочетании с другой клавишей для выполнения действия). Использование модификаторов помогает предотвратить конфликты сочетаний клавиш, когда два или более действия связаны с одной и той же клавишей или комбинацией клавиш. Синтаксис использования модификатора с клавишей:

    "<modifier>-<key>"

Коды модификаторов:

- `S`: Shift
- `C`: Control
- `A`: Alt
- `W`: Super
- `M`: Meta
- `H`: Hyper (If it is bound to something)

### Мультимедиа-клавиши

Если есть мультимедийные клавиши, можно прописать им соответствующие действия, например изменение громкости или яркости экрана. Смотрите статью Keyboard input (Русский) для более подробной информации.

Коды клавиш громкости и яркости следующие (обратите внимание, что им всё равно нужно назначить какие-то команды, чтобы они действительно работали):

- `XF86AudioRaiseVolume`: Увеличение громкости
- `XF86AudioLowerVolume`: Уменьшение громкости
- `XF86AudioMute`: Включение / выключение звука
- `XF86MonBrightnessUp`: Увеличение яркости экрана
- `XF86MonBrightnessDown`: Уменьшение яркости экрана

Полный список XF86 мультимедиа-клавиш можно посмотреть здесь: LQWiki:XF86 keyboard symbols.

#### Управление громкостью

Какие команды следует использовать для управления громкостью, зависит от того, используется ли для звука ALSA, PulseAudio или OSS.

- ALSA: смотрите Advanced Linux Sound Architecture#Keyboard volume control.
- PulseAudio: смотрите PulseAudio (Русский)#Регулировка звука клавиатурой.
- OSS: смотрите Open Sound System#Keyboard volume control.

### Клавиши навигации

Это клавиши-стрелки, обычно используемые для перемещения курсора вверх, вниз, влево или вправо. Коды (не требующие пояснений) следующие:

- `Up`: Вверх
- `Down`: Вниз
- `Left`: Влево
- `Right`: Вправо

## Меню

В Openbox можно использовать три типа меню: `static`, `pipes` (динамическое) и `generators` (статическое или динамическое). Их также можно использовать по отдельности или в любой комбинации.

### Static

Как следует из названия, этот тип меню не меняется сам по себе и редактируется вручную и/или (ре)генерируется автоматически в соответствующей программе редактирования.

Хотя этот тип меню можно использовать для запуска приложений, он также может быть полезен для доступа к определённым функциям и/или выполнения определённых задач (например, настройки рабочего стола), а для работы со списком приложений можно использовать другую программу (например, synapse или xfce4-appfinder).

Файл `~/.config/openbox/menu.xml` будет единственным источником статического содержимого меню рабочего стола.

#### menumaker

menumaker автоматически генерирует `xml` меню для нескольких оконных менеджеров, в том числе Openbox, Fluxbox, IceWM и Xfce. Он ищет установленные программы на компьютере и по результатам генерирует меню. Можно настроить MenuMaker так, чтобы исключить определённые типы приложений (например, имеющие отношения к GNOME или KDE), если вам это требуется.

После установки и запуска он автоматически сгенерирует новый файл `~/.config/openbox/menu.xml`. Чтобы избежать перезаписи существующего файла, введите:

    $ mmaker -v OpenBox3

Иначе, чтобы перезаписать существующий файл, добавьте аргумент `force` (`f`):

    $ mmaker -vf OpenBox3

После создания нового файла `~/.config/openbox/menu.xml` его можно изменить вручную или настроить с помощью графических программ, например obmenuAUR.

#### obmenu

Важно: obmenu также предоставляет `obm-xdg` — генератор списка приложений KDE и GNOME. Однако в нём есть старые ошибки, из-за которых он может выводить некорректный результат или вообще не работать. Поэтому он не рассматривается в этой статье.

obmenuAUR — это графический редактор меню для Openbox, позволяющий редактировать `~/.config/openbox/menu.xml` без необходимости вручную писать `xml`.

#### xdg-menu

archlinux-xdg-menu автоматически сгенерирует меню на основе файлов `xdg`, содержащихся в каталоге `/etc/xdg/`, для многих оконных менеджеров, включая Openbox. Подробнее смотрите Xdg-menu (Русский)#OpenBox.

#### Параметры меню выхода

Совет: Описанным здесь командам также можно назначить сочетания клавиш.

Файл `~/.config/openbox/menu.xml` можно изменить так, чтобы в подменю были те же параметры, что и в oblogout. Пример скрипта ниже предоставит все эти параметры, за исключением возможности блокировки экрана:

    <menu id="exit-menu" label="Exit">
    	<item label="Log Out">
    		<action name="Execute">
    			<command>openbox --exit</command>
    		</action>
    	</item>
    	<item label="Shutdown">
    		<action name="Execute">
    			<command>systemctl poweroff</command>
    		</action>
    	</item>
    	<item label="Restart">
    		<action name="Execute">
    		        <command>systemctl reboot</command>
    		</action>
    	</item>
    	<item label="Suspend">
    		<action name="Execute">
    		        <command>systemctl suspend</command>
    		</action>
    	</item>
    	<item label="Hibernate">
    		<action name="Execute">
    		        <command>systemctl hibernate</command>
    		</action>
    	</item>
    </menu>

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

    <menu id="exit-menu"/>

### Pipes

Совет: Статическое меню вполне может содержать одно или несколько pipe подменю. Функциональность некоторых pipe меню также может зависеть от установки соответствующих программ.

Этот тип меню, по сути, представляет собой скрипт, который предоставляет динамические, обновляемые списки на лету по мере выполнения. Эти списки могут использоваться для различных целей, в том числе для составления списка приложений, предоставления информации и обеспечения функций управления. Несколько готовых скриптов можно найти в AUR. Опытные пользователи также могут изменять и/или создавать свои собственные скрипты. Файл `~/.config/openbox/menu.xml` может и обычно будет содержать несколько pipe меню.

#### Примеры

- openbox-xdgmenuAUR: быстрый конвертер xdg-menu в xml-pipe-menu
- obfilebrowserAUR: Приложение и браузер файлов
- obdevicemenuAUR[ссылка недействительна: package not found]: Управление съёмными носителями через udisks
- wifi pipe menu: Управление беспроводной сетью через netctl

Openbox.org также предоставляет список pipe меню.

### Generators

Этот тип меню сродни тем, которые предоставляются панелями задач в средах рабочего стола, таких как Xfce или LXDE. Этот тип меню с автоматическим обновлением на лету может быть мощным и очень удобным. Также возможно добавление пользовательских категорий и пунктов меню; прочтите документацию по предполагаемому динамическому меню, чтобы определить, можно ли и как это сделать.

Генератор меню должен быть запущен из файла `~/.config/openbox/menu.xml`.

#### obmenu-generator

Совет: Значки можно отключить в obmenu-generatorAUR, даже если они включены в `~/.config/openbox/rc.xml`.

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

Пример выполнения obmenu-generator без значков в `~/.config/openbox/menu.xml`:

    <?xml version="1.0" encoding="utf-8"?>
    <openbox_menu>
        <menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator">
        </menu>
    </openbox_menu>

Для автоматического добавления значков можно использовать опцию `-i`:

    <menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator -i">

#### openbox-menu

Совет: Если это меню вызывает ошибки, их можно решить включением значков в `~/.config/openbox/rc.xml`.

openbox-menuAUR использует menu-cache из LXDE для создания динамических меню. На странице проекта есть дополнительная информация и скриншоты.

### Значки меню

Чтобы отображать значки рядом с пунктами меню, убедитесь, что они включены в разделе `<menu>` файла `~/.config/openbox/rc.xml`:

    <showIcons>yes</showIcons>

При использовании статического меню также нужно изменить файл `~/.config/openbox/menu.xml` указав команду `icon =` и путь к значку для каждого пункта. Пример синтаксиса для добавления значка категории:

    <menu id="apps-menu" label="[label name]" icon="[pathway to icon]/[icon name]">

### Меню рабочего стола в качестве меню панели

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

xdotool — это пакет, который может выдавать команды для имитации нажатия клавиш и их сочетаний, что позволяет использовать его для вызова действий, связанных с сочетаниями клавиш, без необходимости фактически нажимать назначенные им клавиши. Можно использовать сочетание клавиш для вызова меню Openbox, чтобы превратить меню рабочего стола Openbox в меню панели. Если меню рабочего стола настроено под себя и содержит множество функций, это может оказатья полезным для:

- Замены существующего меню панели
- Реализации меню панели, если иное не предусмотрено или невозможно (например, для tint2)
- Альтернативного варианта доступа к меню, если рабочий стол занят каким-то приложением (например xfdesktop).

После установки XDoTool добавьте сочетание клавиш для вызова меню в `~/.config/openbox/rc.xml` ниже заголовка `<!-- Keybindings for running aplications -->`. Пример для сочетания клавиш `Ctrl+m`:

    <keybind key="C-m">
        <action name="ShowMenu">
           <menu>root-menu</menu>
        </action>
    </keybind>

После изменения не забудьте перенастроить Openbox. Теперь можно эмулировать нажатие `Ctrl+m` с помощью XDoTool (обратите внимание, что используется `+` вместо `-`):

    xdotool key control+m

Как использовать эту команду на панели — зависит от конкретной панели. Некоторые позволяют выполнять произвольные команды, для некоторых необходимо создать скрипт. Например, можно создать скрипт `obpanelmenu.sh` в каталоге `~/.config`, записав в него показанную выше команду xdotool:

    ~/.config/obpanelmenu.sh

    xdotool key control+m

После сохранения не забудьте сделать его исполняемым.

Теперь, если панель поддерживает перетаскивание исполняемых файлов на себя, просто перетащите этот скрипт на вашу панель.

### XDG compliant menu

A xdg compliant menu is based on the freedesktop.org standard. The menu is defined in menu-files which reside in `/etc/xdg/menus`. New applications will occur automatically in the menu.

#### Example

The archlinux-menusAUR package provides an Arch Linux specific XDG-compliant menu.

### Вызов и работа меню

В openbox каждое (под)меню имеет имя (id), по которому это меню может быть вызвано как меню верхнего уровня. Для этого надо привязать действие ShowMenu к горячей клавише (keybind) или к событию мыши (mousebind). Некоторые имена являются зарезервированными внутренними именами openbox (client-list-menu, client-list-combined-menu). Имя главного меню не зарезервировано, имя root-menu, используемое "из коробки", можно заменить на любое другое, и можно иметь любое число меню верхнего уровня, вызываемых по горячим клавишам. Эти же меню могут входить в главное меню в качестве подменю любого уровня. Когда меню верхнего уровня вызвано, дальнейшая навигация возможна как мышью, так и клавиатурой.

По умолчанию меню появляется на экране рядом с указателем мыши. Это очень удобно для последующей навигации мышью, но для чисто клавиатурной работы удобнее было бы появление меню в фиксированной позиции, чтобы не приходилось разыскивать его по всему экрану. Начиная с версии 3.6 это возможно: в действии ShowMenu можно задать позицию меню. Синтаксис такой же, как и во всех остальных случаях задания позиции (см. пример ниже).

Пункт меню (item) выполняется по щелчку мыши, или по Enter или пробелу, или по уникальному ускорителю (см.ниже). Меню при этом автоматически закрывается. Однако, если при этом удерживать клавишу Ctrl, то меню не закрывается и можно выполнить ещё какие-то пункты.

Для навигации мышью существенными являются два параметра из секции <menu> в файле rc.xml - submenuShowDelay и submenuHideDelay. Первый из них предотвращает нежелательный вызов генератора pipe-меню, когда мышь перемещается через соответствующий пункт. Второй даёт возможность переместить мышь в раскрывшееся меню по диагонали, не опасаясь, что вместо этого подменю раскроется другое, которое мышь зацепила по пути.

Навигация клавиатурой возможна при помощи курсорных клавиш (тут пояснять нечего), и при помощи ускорителей. По умолчанию ускорителями являются первые буквы меток (label) пунктов меню. Если нажать клавишу такой буквы, то дальнейшее зависит от того, уникален ли данный ускоритель в пределах этого меню. Если да, то соответствующий пункт будет выполнен (или произойдёт переход в подменю). Если ускоритель не уникален, то будет выбран ближайший пункт с таким ускорителем, а дальнейшие нажатия этой же клавиши будут перебирать по кругу пункты с этим ускорителем. В качестве ускорителя может быть использована любая буква в метке. Для этого перед этой буквой следует поставить символ подчёркивания. (Похоже, в качестве ускорителей можно использовать только английские буквы.)

Эта техника позволяет наглядно и не особо напрягая память, вызывать любую из нескольких десятков команд в два-три касания к клавиатуре. Эти команды следует разбить на группы, для каждой из которых составить меню, вызываемое по легко запоминаемой горячей клавише. А в пределах каждого такого меню нужно расставить ускорители так, чтобы они тоже легко запоминались и чтобы все они были уникальными (в пределах одного меню). Например, в главном меню может быть такое подменю:

    <menu id="filemanager" label="_File Manager">
      <item label="m_c" icon="/usr/share/pixmaps/midnightcommander.png">
        <action name="Execute"> <execute>urxvt -e mc</execute> </action>
      </item>
      <item label="Double Commander" icon="/usr/share/pixmaps/doublecmd.png">
        <action name="Execute"> <command>doublecmd</command> </action>
      </item>
      <item label="Pcmanfm" icon="/usr/share/icons/gnome/16x16/apps/system-file-manager.png">
        <action name="Execute"> <command>pcmanfm</command> </action>
      </item>
      <item label="Thunar" icon="/usr/share/icons/hicolor/16x16/apps/Thunar.png">
        <action name="Execute"> <execute>thunar</execute> </action>
      </item>
    </menu>

Для вызова этого же меню на верхнем уровне в файл rc.xml помещаем такое определение:

       <keybind key="W-f">
         <action name="ShowMenu">
           <menu>filemanager</menu>
           <position> <x> center </x> <y> center </y> </position>
         </action>
       </keybind>

Теперь, чтобы вызвать mc, достаточно нажать Win-f (появится меню из 4 пунктов) и затем c, а чтобы вызвать thunar, достаточно нажать Win-f и затем t.

## Советы и рекомендации

### Темы курсора и значков

Смотрите статьи Темы курсора и Значки.

### Значки и фон рабочего стола

Openbox не поддерживает использование значков и фона на рабочем столе, но можно использовать сторонние программы, например PCManFM, SpaceFM или Idesk.

Примечание: Может понадобиться изменить `~/.conkyrc`, прописав для `own_window_type` значение `normal`.

Смотрите List of applications#Wallpaper setters.

### Эффекты композитинга

Openbox не поддерживает композитинг, поэтому для него нужно установить сторонний композитор.

Хотя композитинг необязателен, его использование может решить некоторые визуальные проблемы с oblogout, прозрачностью и тирингом. Смотрите Xorg (Русский)#Список композитных менеджеров.

### oblogout

Oblogout предоставляет красивый графический интерфейс выхода из системы.

### Запуск сложной команды сочетанием клавиш

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

При написании команд не забудьте экранировать специальные символы xml, такие как "`&`" ("&amp;"), "`<`" ("&lt;"), "`>`" ("&gt;") и другие.

В этом примере дисплей немедленно отключится, а экран заблокируется с помощью slock. Он был взят из этой темы на форуме.

     <keybind key="W-l">
       <action name="Execute">
         <command>sh -c 'slock &amp; (sleep .5 &amp;&amp; xset dpms force off)'</command>
       </action>
     </keybind>

Если нужно прописать переменную окружения для программы:

     <keybind key="A-F7">
       <action name="Execute">
         <command>sh -c "LC_ALL=C obconf"</command>
       </action>
     </keybind>

Запись stdout и stderr из запускаемой программы в файл:

     <keybind key="A-f">
       <action name="Execute">
         <command>sh -c sh -c "exec gimp &gt;/tmp/gimp.out 2&gt;&amp;1"</command>
       </action>
     </keybind>

Скриншот:

     <keybind key="Print">
       <action name="Execute">
         <command>gnome-screenshot --clipboard</command>
       </action>
     </keybind>
     <keybind key="A-Print">
       <action name="Execute">
         <command>gnome-screenshot --clipboard --window</command>
       </action>
     </keybind>
     <keybind key="W-Print">
       <action name="Execute">
         <command>gnome-screenshot --interactive</command>
       </action>
     </keybind>

### Лаунчеры программ

Учитывая отсутствие среды рабочего стола в базовой установке Openbox, может быть полезно установить один или несколько лаунчеров в качестве дополнений к меню Openbox и горячим клавишам. Их список можно посмотреть в Category:Application launchers и List of applications/Other#Application launchers; популярные примеры — Gmrun и dmenu.

### Переключение рабочих столов с помощью мыши

Можно сделать переключение рабочих столов путём перемещения курсора мыши к краю экрана. Для этого установите xdotool и добавьте в `~/.xinitrc`:

    xdotool behave_screen_edge --delay 500 left set_desktop --relative -- -1 &
    xdotool behave_screen_edge --delay 500 right set_desktop --relative -- +1 &

### Выбор приложений по умолчанию

Смотрите Приложения по умолчанию.

### Прозрачность окон

Важно: Это может не сработать, если в группе действий определены другие действия.

С помощью transset-dfAUR вы сможете включать прозрачность окон на лету.

Для этого поместите представленные ниже строки в секцию `<mouse>` файла `~/.config/openbox/rc.xml`. Таким образом вы сможете с помощью прокрутки колёсика мыши регулировать прозрачность окон, когда курсор мыши находится над заголовком окна:

    <context name="Titlebar">
        ...
        <mousebind button="Up" action="Click">
            <action name= "Execute" >
            <execute>transset-df --point .2 --inc  </execute>
            </action>
        </mousebind>
        <mousebind button="Down" action="Click">
            <action name= "Execute" >
            <execute>transset-df --point .2 --dec </execute>
            </action>
        </mousebind>
        ...
    </context>

### Использование obxprop для более быстрой настройки

Пакет openbox предоставляет команду `obxprop`, которая может анализировать релевантные значения для настройки приложений в `rc.xml`. Официально `obxprop | grep "^_OB_APP"` рекомендуется для этой задачи. Запустите эту команду команду, затем щёлкните по нужному окну, чтобы увидеть его свойства в терминале.

### Значения Xprop для приложений

Можно использовать xorg-xprop для просмотра значений свойств у выбранных приложений. Если вы используете специальные настройки для приложений, может оказаться удобным такой псевдоним для bash:

    alias xp='xprop | grep "WM_WINDOW_ROLE\|WM_CLASS" && echo "WM_CLASS(STRING) = \"NAME\", \"CLASS\""'

Для использования запустите `xp` и кликните на запущенную программу, для которой вы хотите определить собственные настройки. Результат отобразит только информацию, требуемую для Openbox, а именно `WM_WINDOW_ROLE` и `WM_CLASS` (имя и класс):

    WM_WINDOW_ROLE(STRING) = "roster"
    WM_CLASS(STRING) = "gajim.py", "Gajim.py"
    WM_CLASS(STRING) = "NAME", "CLASS"

### Переключение раскладок клавиатуры

Смотрите Xorg/Конфигурация клавиатуры#Переключение раскладок клавиатуры.

### Изменение сетки виртуальных рабочих столов

Установите obsetlayoutAUR. Например, чтобы установить сетку 2x2:

    obsetlayout 0 2 2 0

Запуск без аргументов покажет справку. Эти четыре числа означают следующее:

- расположение рабочих столов в сетке: 0 — по горизонтали, 1 — по вертикали;
- ширина сетки;
- высота сетки;
- в каком углу располагается первый виртуальный рабочий стол: 0 — в левом верхнем, 1 — в правом верхнем, 2 — в правом нижнем, 3 — в левом нижнем.

### Горячие углы

lead-gitAUR позволяет сделать активные углы в openbox и других легковесных менеджерах окон. Добавьте команду в #Автозапуск приложений:

    lead &

Действия, выполняемые горячими углами, можно прописать в файле `~/.config/lead/lead.conf` (замените `eDP1` на название вашего вывода экрана, которое вы можете узнать с помощью xrandr):

    [eDP1]
    bottom=
    bottomLeft=chromium
    bottomRight=thunar
    left=
    right=
    top=
    topLeft=mlde.californium toggle
    topRight=skippy-xd

Подробнее смотрите [2].

### Привязка окон

Многие среды рабочего стола и оконные менеджеры поддерживают привязку окон (window snapping, например Windows 7 Aero snap), позволяя автоматически выставлять окно в определённое место при его перемещении к краю экрана. Этот эффект можно сымитировать в Openbox с помощью сочетаний клавиш для окон с фокусом.

Как показано в примере, для указания размеров окна необходимо использовать проценты (подробнее смотрите на openbox.org). В этом случае клавиша `super` используется вместе с `navigation`:

    <keybind key="W-Left">
        <action name="Unmaximize"/>
        <action name="MaximizeVert"/>
        <action name="MoveResizeTo">
            <width>50%</width>
        </action>
        <action name="MoveToEdge"><direction>west</direction></action>
    </keybind>
    <keybind key="W-Right">
        <action name="Unmaximize"/>
        <action name="MaximizeVert"/>
        <action name="MoveResizeTo">
            <width>50%</width>
        </action>
        <action name="MoveToEdge"><direction>east</direction></action>
    </keybind>

Однако после того, как окно было привязано к краю, оно будет оставаться развёрнутым по вертикали до тех пор, пока впоследствии не будет развёрнуто и не восстановлено. Решение — реализовать дополнительные сочетания клавиш: в данном случае с помощью клавиш `down` и `up`. Это также ускорит вытягивание привязанных окон за края экрана:

    <keybind key="W-Down">
       <action name="Unmaximize"/>
    </keybind>
    <keybind key="W-Up">
       <action name="Maximize"/>
    </keybind>

Подробнее можно почитать в этой теме на форуме Ubuntu. Также есть такие приложения, как opensnapAUR, для автоматического моделирования поведения привязки окон без использования сочетаний клавиш. Другой вариант — использовать bunsen-utilities-gitAUR, который предоставляет команды `bl-aerosnap --left` и `bl-aerosnap --right`, которые привязывают активное окно к левому или правому краю соответственно, если оно ещё не привязано, и восстанавливают его до исходного размера и положения, если уже привязано. Просто пропишите эти команды для нужных вам сочетаний клавиш.

### Плавный переход из менеджера входа

Примечание: Проверено в LightDM.

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

Установку цвета фона корневого окна можно отключить, изменив скрипт запуска Openbox `/usr/lib/openbox/openbox-autostart`. Просто закомментируйте (или удалите) блок, начинающийся с `# Set a background color`.

Примечание: Пользователи, которые специально не устанавливают фон, автоматически унаследуют фон из экранного менеджера, если они отключат настройку цвета корневого окна.

### Декорации окон

Чтобы убрать декорации окон для всех или отдельных приложений, используйте опцию <decor> в разделе <applications> файла rc.xml.
Пример для Firefox, включая варианты Firefox-Beta и Firefox-Nightly:

     <application class="Firefox*">
       <decor>no</decor>
     </application>

Можно также отключить декорации для всех приложений (используя класс "*"), а затем включить их (используя yes) для отдельных. Чтобы применить изменения, перезапустите сеанс рабочего стола и Openbox. Openbox FAQ

## Решение проблем

### Firefox

Firefox и основанные на нём приложения могут игнорировать правила (например `<desktop>`), если не используется `class="Firefox"`. Смотрите раздел #Значения Xprop для приложений.

### Отсутствуют темы

Если не получается выбрать свежеустановленную тему, для начала откройте каталог темы, чтобы убедиться, что она совместима с Openbox — в нём должен быть подкаталог `openbox-3`, а в нём файл `themerc`. Иногда также может присутствовать файл `.obt` (OpenBox Theme), который затем можно вручную загрузить в obconf.

Тема также может быть недоступна из-за неправильных прав у файлов. Подробнее в статье Разрешения и атрибуты файлов.

### Отключение непрерывного переключения рабочих столов

По умолчанию Openbox переключается с последнего рабочего стола обратно на первый рабочий стол при прокрутке колёсиком мыши. Если вам такое поведение не нравится, его можно отключить опцией `<wrap>no</wrap>` в разделе `mousebind`.

       <context name="Desktop">
         <mousebind button="Up" action="Click">
           <action name="GoToDesktop">
             <to>previous</to>
             <wrap>no</wrap>
           </action>
         </mousebind>
         <mousebind button="Down" action="Click">
           <action name="GoToDesktop">
             <to>next</to>
             <wrap>no</wrap>
           </action>
         </mousebind>
       </context>

### Новые окна загружаются под старыми

Некоторые окна приложений (например Firefox или Libreoffice) могут загружаться под активными окнами, и вам придётся переключаться на только что созданное приложение вручную, чтобы увидеть его. Для исправления такого поведения добавьте в файл `~/.config/openbox/rc.xml` между строк `<openbox_config>` и `</openbox_config>` следующие теги:

    <applications>
      <application class="*">
        <focus>yes</focus>
      </application>
    </applications>

## Смотрите также

- Openbox Website – Официальный веб-сайт
- Box-Look.org – Хороший ресурс с темами и соответствующими артами
- Openbox Hacks and Configs Thread @ Arch Linux Forums
- Openbox Screenshots Thread @ Arch Linux Forums
- An Openbox guide
- Викиучебник по настройке Openbox

Category:

- Stacking window managers (Русский)

Hidden category:

- Pages with broken package links