# Openbox (Русский)

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

- xorg (Русский)
- xinitrc (Русский)
- Автозапуск
- SpaceFM (Русский)
- Меню Xdg
- systemd (Русский)

Openbox - это легкий и гибкий в настройке оконный менеджер, поддерживающий большинство стандартных функций. Все его особенности описаны на официальном веб-сайте. Эта статья описывает процесс установки Openbox под Arch Linux.

## Установка

openbox доступен из репозитория сообщества:

    # pacman -S openbox

Далее скопируйте конфигурационные файлы: `rc.xml`, `menu.xml`, `autostart`, и `environment` в `~/.config/openbox`:

Примечание: Делайте это с правами пользователя.

    $ mkdir -pv ~/.config/openbox
    $ cp -v /etc/xdg/openbox/{rc.xml,menu.xml,autostart,environment} ~/.config/openbox

- `rc.xml` основной конфигурационный файл. В нем описаны сочетания клавиш, темы, виртуальные столы, и т.д.

- `menu.xml` описывает содержимое меню, выпадающего по правому клику мыши. В нем описаны ярлыки запуска приложений и другие ярлыки. Смотрите секцию #Меню.

- `autostart` файл, отвечающий за автозапуск приложений при загрузке сессии openbox-session. Содержит программы, которые должны запускаться при загрузке. Обычно используется для установки переменных окружения, запуска панелей и доков, установки обоев на рабочий стол или запуска иных скриптов. Смотри Openbox Wiki.

- `environment` основной файл окружения. Содержит переменные, которые будут добавлены в контекст Openbox. Любые переменные, которые вы устанавливаете здесь будут видны в Openbox всем приложениям, которые вы запускаете, включая приложения в меню.

Совет: Используйте `environment` для определния каких-либо путей, настроки языка или раскладки.

К примеру, сделаем переменную `SOMEDATA`, указывающую на `/path/to/some/data` доступным для Openbox.

    ~/.config/openbox/environment

    export SOMEDATA=/path/to/some/data

## Обновление до Openbox 3.5

Если вы обновляетесь до Openbox 3.5 или более поздней версии с ранних релизов, то вам следует знать следующее:

- Новый конфигурационный файл `environment` вы должны скопировать отсюда /etc/xdg/openbox в папку ~/.config/openbox .
- Прошлый конфигурационный файл, именуемый `autostart.sh` теперь носит имя `autostart`. Вам следует его переименовать - убрать из имени .sh .
- Несколько изменилась грамматика в файле `rc.xml`. Но пока Openbox понимает старые опции, сравните свои файлы конфигурации с соответствующими файлами в /etc/xdg/openbox и посмотрите на изменения.

### Проблемы 3.5

Смотри секцию ниже Устранение неисправностей Openbox 3.5.

## Openbox в качестве отдельного менеджера окон

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

Примечание: Для поддержки автозапуска приложений из `~/.config/openbox/autostart` Вам потребуется использовать Openbox в качестве отдельного оконного менеджера.

Для запуска Openbox в качестве отдельного менеджера окон файл `~/.xinitrc` должен выглядеть так:

    exec openbox-session

Вы можете так же запустить Openbox из терминала, используя xinit:

    $ xinit /usr/bin/openbox-session

Если вы использовали другой менеджер окон (например, Xfwm) и теперь Openbox не запускается после выхода из X, попытайтесь проделать следующее:

    mv ~/.config/autostart ~/.config/autostart-bak

Примечание: python2-xdg требуется Openbox для xdg-autostart

## Openbox в качестве оконного менеджера для других окружений рабочих столов

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

### GNOME 2.24 и 2.26

Создайте `/usr/share/applications/openbox.desktop` следующего содержания:

    [Desktop Entry]
    Type=Application
    Encoding=UTF-8
    Name=OpenBox
    Exec=openbox
    NoDisplay=true
    # name of loadable control center module
    X-GNOME-WMSettingsModule=openbox
    # name we put on the WM spec check window
    X-GNOME-WMName=OpenBox

В gconf, установите `/desktop/gnome/session/required_components/windowmanager` в `openbox`:

    $ gconftool-2 -s -t string /desktop/gnome/session/required_components/windowmanager openbox

В завершении, выберите сессию GNOME в GDM меню сессий.

### GNOME 2.26 Redux

Если предыдущее руководство для GNOME 2.24 не работает:

Если когда вы пытаетесь сойти в сессию "Gnome/Openbox" session -- и сделать это не получается, попытайтесь так, как написано здесь. Это один из путей использовать Openbox в качестве оконного менеджера в любое время, когда вы используете сессию Gnome:

1. Войдите в вашу сессию Gnome (она должна использовать Metacity в качестве оконного менеджера);
2. Установите Openbox если вы этого еще не сделали;
3. В главном меню System → Preferences → Startup Applications (может называться 'Session' в старых версиях Gnome);
4. Откройте Startup Application, выберите '+ Add' и введите текст, показанный ниже. Комментариями можно пренебречь (#);
5. Кликните на кнопку 'Add' для того, чтобы закрыть окно. Убедитесь, что переключатель точки выхода был выбран;
6. Покиньте вашу сессию Gnome и войдите снова;
7. Теперь в качестве оконного менеджера должен запуститься Openbox.

    Name:    Openbox Windox Manager          # Можно изменить
    Command: openbox --replace               # Этот текст нельзя удалять или менять, но можно добавить другие опции
    Comment: Replaces metacity with openbox  # Можно изменить

Этот ярлык будет автоматически запускаться каждый раз, когда запускается сессия пользователя в Gnome.

### GNOME 2.22 и ниже

1. Если вы используете GDM, выберите "GNOME/Openbox"
2. Если вы используете команду `startx`, добавьте `exec openbox-gnome-session` в `~/.xinitrc`
3. И выполните из терминала команду:

    $ xinit /usr/bin/openbox-gnome-session

### KDE

1. Если вы используете KDM, выберите "KDE/Openbox"
2. Если вы используете команду startx, добавьте `exec openbox-kde-session` в `~/.xinitrc`
3. И выполните из терминала команду:

    $ xinit /usr/bin/openbox-kde-session

### Xfce4

Загрузитесь в обычную Xfce4 сессию. И наберите в терминале команду:

    $ killall xfwm4 ; openbox & exit

Тем самым вы убьете xfwm4, запустите Openbox, и закроете терминал. Теперь можно выйти из системы, но предварительно проверьте, что выбрали "Save session for future logins". При следующей загрузке Xfce4 в качестве оконного менеджера должен быть Openbox.

Для того, чтобы включить выход из сессии используя xfce4-session, отредактируйте `~/.config/openbox/menu.xml`. Если этот файл отсутствует, скопируйте его из `/etc/xdg/openbox/`. Посмотрите на его содержимое, он выглядит так:

     <item label="Exit Openbox">
       <action name="Exit">
         <prompt>yes</prompt>
       </action>
     </item>

Приведите его к такому виду:

     <item label="Exit Openbox">
       <action name="Execute">
         <prompt>yes</prompt>
        <command>xfce4-session-logout</command>
       </action>
     </item>

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

Если у вас проблемы с переключением между виртуальными столами с помощью колеса мыши - пропускаются рабочие столы, то отредактируйте `~/.config/openbox/rc.xml`. Измените привязку к клавишам мыши для действий "DesktopPrevious" и "DesktopNext" в подгруппе Desktop в группе Root.

Когда используете главное меню Openbox вместо главного меню Xfce, вы должны выйти из Xfdesktop скомандовав из терминала:

    $ xfdesktop --quit

Xfdesktop управляет обоями и значками на рабочем столе, поэтому вам могут потребоваться такие утилиты, как ROX для решения этих задач.

(После закрытия Xfdesktop проблема с виртуальными рабочими столами отпадает.)

## Openbox для пользователей с несколькими мониторами

Пока Openbox обеспечивает лучше, чем среднюю поддержку нескольких мониторов, проект развивающий эту тему называется Openbox Multihead и доступен в репозитории AUR это дает пользователям возможность воспользоваться его удобством. Эта модель обычно не основана на плавающих оконных менеджерах, но существует в основном в тайловых оконных менеджерах. Она хорошо пояснена на сайте Xmonad. Также, пожалуйста ознакомьтесь с README.MULTIHEAD для того, чтобы понять все новые возможности и правильно настроить Openbox Multihead.

Openbox Multihead функционирует также, как и обычный Openbox когда доступен только один монитор.

Обратная сторона медали Openbox Multihead в том, что это ломает EWMH (Extended Window Manager Hints), т.к. предполагается, что один и только один рабочий стол доступен в данный момент времени. Таким образом, существующие менеджеры не могут работать корректно именно по этой причине. Чтобы исправить это попробуйте pager-multihead, который вы можете найти в репозитории AUR, он совместим с Openbox Multihead. Скриншоты.

В завершение, новая версия pytyle может быть найдена в репозитории AUR она работает с Openbox Multihead.

Обе pytyle3 и pager-multihead работают и без Openbox Multihead если только один монитор активен.

## Настройка

Здесь несколько опций для настройки параметров Openbox:

### Ручная настройка

Для настройки Openbox вручную отредактируйте файл `~/.config/openbox/rc.xml` с помощью текстового редактора. Он содержит множество поясняющих комментариев. Смотрите Help:Configuration openbox wiki для того, чтобы узнать больше.

### ObConf

ObConf это графическая утилита для настройки Openbox. Она может быть использована для установки множества общих настроек, таких как темы, виртуальные рабочие столы, свойства окон и рабочих столов. Ее можно установить используя pacman:

    # pacman -S obconf

ObConf не может быть использован для настройки сочетаний клавиш и некоторых других функций. Для изменения этих параметров редактируйте `rc.xml` вручную. В качестве альтернатив можно воспользоваться obkeyAUR из AUR.

### Настройка приложений

Openbox позволяет настроить приложения. Это позволяет вам определять правила для программ. Например:

- Запустить ваш браузер на отдельном виртуальном рабочем столе.
- Открыть ваш терминал без оконного обрамления.
- Сделать так, чтобы ваш bit-torrent клиент открывался в заданной позиции экрана.

Настройки приложений определяются в файле `~/.config/openbox/rc.xml`. Настройки в файле прокомментированы. Подробности смотрите в Help:Applications openbox wiki.

## Меню

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

### Ручная настройка меню

Вы можете отредактировать `~/.config/openbox/menu.xml` текстовым редактором. Множество настроек не требуют пояснения. В этой статье меню описано более подробно Help:Menus.

### Иконки в меню

Начиная с версии 3.5.0 вы можете добавлять иконки рядом с ярлыками запуска программ в меню. Сделать это можно так:

1. добавьте <showIcons>yes</showIcons> в секцию <menu> в файл `rc.xml`
2. отредактируйте описание ярлыка в меню в файле `menu.xml` добавив в него icons="<path>" выглядит это примерно так :

    <menu id="apps-menu" label="SomeApp" icon="/home/user/.icons/application.png">

затем выполните openbox --reconfigure или openbox --restart если у вас возникают проблемы с обновлением меню :)

### MenuMaker

MenuMaker это утилита создания XML меню для нескольких оконных менеджеров включая Openbox. MenuMaker сканирует ваш компьютер на исполняемые файлы и генерирует меню по результатам сканирования. Она может быть сконфигурирована так, чтобы исключить определенные типы приложений (GNOME, KDE, или другие), если вам это требуется.

    # pacman -S menumaker    #  Установка MenuMaker из репозитория

Послу установки сгенерируйте файл меню (named `menu.xml`) запустив программу.

    $ mmaker -v OpenBox3     #  Не перезаписывать существующий файл меню.
    $ mmaker -vf OpenBox3    #  Принудительно перезаписать файл меню.
    $ mmaker --help          #  Просмотр всех доступных опций MenuMaker.

MenuMaker создает очень большой файл меню `menu.xml`. Вы можете его отредактировать вручную или сгенерировать заново после установки программ.

### Obmenu

Obmenu это редактор меню для Openbox. Это графическое приложение - лучший выбор для тех, кто не любит или не хочет редактировать XML код. Obmenu доступно из репозитория сообщества:

    # pacman -S obmenu

После установки и запуска `obmenu` вы сможете добавлять и удалять приложения из меню как вам будет угодно.

### openbox-menu

Openbox-menu использует menu-cache из проекта LXDE для создания динамического меню для Openbox.

Домашняя страничка проекта: http://mimasgpc.free.fr/openbox-menu_en.html

Страница в репозитории AUR: https://aur.archlinux.org/packages.php?ID=31605

#### Obm-xdg

`obm-xdg` это консольная утилита, входящая в состав Obmenu. Эта утилита распределяет по категориям в подменю установленные GTK/GNOME приложения.

Для использования obm-xdg с другими меню, добавьте в файл `~/.config/openbox/menu.xml` такую строку:

    <menu execute="obm-xdg" id="xdg-menu" label="xdg"/>

Затем после линии с вашим 'root-menu' добавьте такую строку в том месте, где бы вы хотели чтобы появилось меню:

    <menu id="xdg-menu"/>

Для использования obm-xdg самостоятельно создайте `~/.config/openbox/menu.xml` только такого содержания:

    <openbox_menu>
     <menu execute="obm-xdg" id="root-menu" label="apps"/>
    </openbox_menu>

Затем запустите `openbox --reconfigure` для того чтобы обновить меню Openbox. Теперь вы должны увидеть подменю с именем xdg в вашем меню.

Примечание: Если у вас не установлен GNOME, то вам необходимо установить пакет gnome-menus для obm-xdg.

### Основанный на Python скрипт меню xdg

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

Найти его можно по этой ссылке: последняя версия

Скачайте из репозитория выше. Поместите в любую, удобную для вас папку.

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

    <menu id="apps-menu" label="xdg-menu" execute="python2 <path>/xdg-menu"/>

Сохраните файл и запустите `openbox --reconfigure`.

Примечание: Если у вас не установлен GNOME, то вам необходимо установить пакет gnome-menus для xdg-menu.

### Генератор меню для Openbox

Он находится в репозитории AUR под именем obmenugen-bin, генератор меню для Openbox позволяет создать меню из файлов *.desktop. Obmenugen представляет текстовые файлы, как фильтры для элементов меню.

    $ obmenugen               # Создать файл меню
    $ openbox --reconfigure   # Чтобы увидеть результат в вашем меню

### Pipe меню

Как в других оконных менеджерах, в Openbox возможно использование скриптов для генерирования динамического меню (меню на лету). Например, мониторы системных ресурсов, управление медиа плеерами или мониторы погоды. Примеры скриптов Pipe меню можно найти здесь Openbox:Pipemenus это одна из страниц проекта Openbox.

Пользователь Xyne создал браузер файлов pipe меню, а пользователь brisbin33 создал pipe меню для сканирования и подключения к беспроводным сетям (используется netcfg). Темы форума этих утилит по ссылкам ниже: браузер файлов, wifi.

Пользователь jnguyen создал pipe меню для управления съемными носителями с использованием Udisks. Тема на форуме по этой ссылке: obdevicemenu.

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

В 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.

### Дополнительные функции

Примечание: В этой статье описывается выключение/перезагрузка/гибернация с помощью systemd
.
Совет: Также можно настроить на горячие клавиши, к примеру на Ctrl+H будет выполняться перезагрузка хоста
.

Редактирование происходит в файле: `~/.config/openbox/menu.xml`.

    <menu id="exit-menu" label="Exit">
    	<item label="Завершение сеанса">
    		<action name="Execute">
    			<command>openbox --exit</command> # Выход из сессии
    		</action>
    	</item>
    	<item label="Выключение">
    		<action name="Execute">
    			<command>systemctl poweroff</command> # Выключение
    		</action>
    	</item>
    	<item label="Перезагрузка">
    		<action name="Execute">
    		        <command>systemctl reboot</command> # Перезагрузка
    		</action>
    	</item>
    	<item label="Блокировка">
    		<action name="Execute">
    		        <command>systemctl suspend</command> # Блокировка
    		</action>
    	</item>
    	<item label="Сон">
    		<action name="Execute">
    		        <command>systemctl hibernate</command> # Сон
    		</action>
    	</item>
    </menu>

Важно: Обязательно выполните указания ниже, иначе меню не обновится.

Далее добавьте `exit-menu` меню в строку, где перечисляются пункты меню. (обычно это последняя строка):

    <menu id="exit-menu"/>

Выполните следующую команду:

    $ openbox --reconfigure

Готово. Теперь на соответствующие пункты меню выполняются соответствующие им действия.

## Управление окнами

Openbox предоставляет все обычные операции над окнами. Их список можно увидеть, раскрыв меню окна. По умолчанию оно открывается щелчком мыши на иконке в левом верхнем углу окна или горячей клавишей Alt-Space. Вариант с горячей клавишей является единственно возможным, если у окна отключены декорации. В openbox также можно перемещать и изменять размер окон без точного прицеливания в границы и уголки. В настройках по умолчанию Alt и перетаскивание правой кнопкой мыши служит для изменения размера или перемещения окна, а Alt и перетаскивание левой кнопкой мыши служит для перемещения окна. Кстати, если при перемещении окна упереть мышь в край экрана, то происходит переход на соседний рабочий стол вместе с окном. На это поведение влияет параметр <screenEdgeWarpTime> в секции mouse файла rc.xml.

Кроме этого имеется много других операций, полный список которых можно прочитать на сайте проекта Openbox: [1]. Учтите, действие GrowToFill описано, но пока что (3.5.2) не реализовано. Следует обратить внимание на операции MoveToEdge, GrowToEdge, а также (Un)decorate и ToggleDecorations. С их помощью можно соорудить некий "тайлинг вручную". К слову, все операции с границами имеют также сокращённый синтаксис, когда имя границы включается прямо в операцию, например, следующие два определения эквивалентны:

       <keybind key="S-C-W-Left">
         <action name="GrowToEdge"<direction>west</direction>/>
       </keybind>

       <keybind key="S-C-W-Left"> <action name="GrowToEdgeWest"/> </keybind>

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

Openbox запускает все программы описанные в файле `~/.config/openbox/autostart`. Этот скрипт не создается по умолчанию. При отсутствии этого скрипта в домашней папке пользователя, Openbox использует системный скрипт `/etc/xdg/openbox/autostart`. Системный скрипт не используется, если существует пользовательский скрипт.

Для создания пользовательского скрипта автозапуска скопируйте системный скрипт в вашу папку с настройками `~/.config/openbox/` и добавьте в него свои команды. Это не гарантирует вам работоспособность окружения должным образом.

Полная инструкция доступна по ссылке Help:Autostart на сайте проекта Openbox.

Примечание: Этот файл назывался autostart.sh до версии OpenBox 3.5.0. Если вы обновляетесь, то проверьте переименовали вы ли его, удалив в имени старого файла окончание .sh.

## Темы и оформление

Дополнительная статья на эту тематику Openbox Themes and Apps расскажет вам подробнее об изменении внешнего вида Openbox.

### Темы Openbox

Темы управляют внешним видом окон, заголовков и кнопок. Также они контроллируют появление меню и режимы поступления информации на экран. Дополнительные темы доступны из стандартного репозитория.

    # pacman -S openbox-themes

### Курсоры, иконки, обои рабочего стола

Пожалуйста смотрите Openbox Themes and Apps для получения информации о перенастройке этих параметров.

## Советы и хитрости

### Поведение подобное Aero Snap

Windows 7 поддерживает уникальную функцию поведения окон, она заключается в том, что при перемещении окна к краю экрана оно цепляется за него. Этот эффект может быть включен в Openbox. Подробнее написано здесь.

### Ассоциации файлов

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

Пакет в AUR, называемый gnome-defaults-list содержит список типов файлов и связанных с ними программ для рабочего стола Gnome. Этот список устанавливается в `/etc/gnome/defaults.list.`

Откройте этот файл с помощью вашего текстового редактора. Теперь вы можете заменить предложенные там приложения на те, которые вы выбрали. Например, totem <=> vlc или eog <=> mirage. Сохраните файл `~/.local/share/applications/defaults.list`.

Другой способ установить ассоциации - установить пакет perl-file-mimeinfo из репозитория и вызвать mimeopen, например, так:

    mimeopen -d /path/to/file

У вас спросят каким приложением открыть /path/to/file:

    Please choose a default application for files of type text/plain
           1) notepad  (wine-extension-txt)
           2) Leafpad  (leafpad)
           3) OpenOffice.org Writer  (writer)
           4) gVim  (gvim)
           5) Other...

Ваш ответ установит приложение по умолчанию для открытия всех файлов данного типа. Описание ассоциаций приложений к типам файлов `/usr/bin/perlbin/vendor/mimetype`.

### Копирование и вставка

Из терминала Ctrl+Insert для копирования и Shift+Insert для вставки.

Также Ctrl+Shift+C для копирования и mouse middle-click для вставки (в терминалах).

Другие приложения возможно используют другие сочетания клавиш для копирования и вставки.

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

Программа transset-df (практически такая же как transset) устанавливается с помощью команды pacman -S transset-df. С помощью transset-df вы сможете включать прозрачность окон на лету.

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

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

Это будет работать только когда нет каких-то дополнительных действий назначенных в этой группе действий.

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

Если вы используете специальные настройки для приложений, вы можете найти этот удобный алиас для bash:

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

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

    [thayer@dublin:~] $ xp
    WM_WINDOW_ROLE(STRING) = "roster"
    WM_CLASS(STRING) = "gajim.py", "Gajim.py"
    WM_CLASS(STRING) = "NAME", "CLASS"

#### Xprop для Firefox

В любом случае, Firefox и подобные приложения игнорируют правила (e.g. <desktop>) не меньше `class="Firefox*"` используется. Это применяет любое значение xprop может сообщить для программного класса WM_CLASS.

### Привязка меню к кнопке

Некоторым людям может потребоваться привязать меню Openbox (или другое меню) к кнопке. Это полезно для создания панели кнопок всплывающего меню. Хотя Openbox не поддерживает это, программа xdotool эмулирует нажатие клавиш. Openbox может быть настроен так, что при нажатии клавиши выполняется действие ShowMenu.

Пакет xdotool доступен в AUR. После установки xdotool, добавьте следующее в секцию <keyboard> в вашем файле `rc.xml`:

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

Перезапустите/переконфигурируйте Openbox. Эта команда вызовет меню в точке, где находится курсор мыши. Команда распространяется как есть, привязка к объектам, или размещение в скрипте.

    $ xdotool key ctrl+alt+q

Конечно, вы можете изменить ключевые ярлыки на ваш вкус. Рассмотрим отрывок для tint2 (панель задач) файл настроек, который показывает выпадающее меню по клику по области с часами. Каждая комбинация клавиш установлена на открытие файла конфигурации `rc.xml` меню Openbox. Отличие right?click от left?click:

    clock_rclick_command = xdotool key --clearmodifiers "ctrl+XF86PowerOff"
    clock_lclick_command = xdotool key --clearmodifiers "alt+XF86PowerOff"

### Urxvt в качестве фона рабочего стола

С Openbox запустить терминал в качестве фона рабочего стола крайне просто. Вам не потребуется использовать devilspie.

Сначала вы должны включить прозрачность, откройте ваш `~/.Xdefaults` (если он не существует, то создайте его в домашней директории).

    URxvt*transparent:true
    URxvt*scrollBar:false
    URxvt*geometry:124x24    #Я не использую полный экран, если вы хотите терминал на весь экран, то не беспокойтесь как это сделать написано ниже.
    URxvt*borderLess:true
    URxvt*foreground:Black   #Цвет шрифта. Мои обои рабочего стола белые, возможно вы захотите изменить его на белый.

Затем отредактируйте файл `.config/openbox/rc.xml`:

    <application name="URxvt">
      <decor>no</decor>
      <focus>yes</focus>
      <position>
        <x>center</x>
        <y>20</y>
      </position>
      <layer>below</layer>
      <desktop>all</desktop>
      <maximized>true</maximized> #Используйте только если вы хотите терминал на весь экран.
    </application>

Магия приходит со строчкой `<layer>below</layer>`, которая помещает приложение под все остальные. Здесь Urxvt отображен на всех рабочих столах, измените это для вашего удобства.

Примечание: Вместо использования <application name="URxvt"> вы можете дать другое имя (например, "URxvt-bg"), и использовать опцию -name при запуске uxrvt. Такой способ работает только для urxvt, для которого вы выбрали имя URxvt-bg введите и модифицируйте правила для этого приложения в rc.xml. Например: urxvt -name URxvt-bg (учитывая регистр)

#### Переключение между рабочими столами

Вышеописанный метод минимизирует Urxvt когда вы используете команду ToggleShowDesktop. Во избежание этого воспользуйтесь этим постом. Здесь требуется редактировать исходный код Urxvt.

Примечание: Этот метод возможно уже не работает после недавнего обновления, сейчас происходит утечка памяти когда запущен пропатченный Urxvt.

Рабочим остается только метод, описанный здесь. Он делает ToggleShowDesktop таким, чтобы не восстанавливал другие приложения на рабочем столе, когда ToggleShowDesktop запущен второй раз. Это так же дает возможность использовать различные терминалы, а не только Urxvt.

### Клавиши регулирования громкости на клавиатуре

#### ALSA

Если вы используете ALSA для вывода звука, вы можете воспользоваться программой amixer для регулирования громкости звука. Вы можете использовать сочетания клавиш и назначить им команды в Openbox. (Или в качестве альтернативы, вы можете попытаться найти настоящие имена для ваших мультимедийных клавиш и их карту.) Например, в секции <keyboard> файла rc.xml:

       <keybind key="W-Up">
         <action name="Execute">
           <command>amixer set Master 5%+</command>
         </action>
       </keybind>

Таким образом, вы назначите комбинации клавиш Windows key + Up arrow возможность повысить уровень громкости канала Master. Соответственно, чтобы понизить:

       <keybind key="W-Down">
         <action name="Execute">
           <command>amixer set Master 5%-</command>
         </action>
       </keybind>

В качестве другого примера - XF86Audio:

       <keybind key="XF86AudioRaiseVolume">
         <action name="Execute">
           <command>amixer set Master 5%+ unmute</command>
         </action>
       </keybind>
       <keybind key="XF86AudioLowerVolume">
         <action name="Execute">
           <command>amixer set Master 5%- unmute</command>
         </action>
       </keybind>
       <keybind key="XF86AudioMute">
         <action name="Execute">
           <command>amixer set Master toggle</command>
         </action>
       </keybind>

Пример, приведенный выше должен работать для большинства мультимедийных клавиатур. Он должен увеличивать, уменьшать и выключать звук канала Master для вашего аудиоустройства. Помните так же об этом:

- Клавиша "Mute" должна включать канал Master если он уже выключен.
- Клавиши "Raise" и "Lower" должны включать канал Master если он выключен.

#### Pulseaudio

Если вместе с ALSA вы используете pulseaudio, то в этом случае настройки несколько отличаются, amixer должен использовать pulse.

      <keybind key="XF86AudioRaiseVolume">
         <action name="Execute">
           <command>amixer -D pulse set Master 5%+ unmute</command>
         </action>
       </keybind>
       <keybind key="XF86AudioLowerVolume">
         <action name="Execute">
           <command>amixer -D pulse set Master 5%- unmute</command>
         </action>
       </keybind>
       <keybind key="XF86AudioMute">
         <action name="Execute">
           <command>amixer set Master toggle</command>
         </action>
       </keybind>

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

### Выключение/перезагрузка OpenBox

Смотрите статью Sudo (Русский).

## Устранение неисправностей Openbox 3.5

### X server падает

Проблема была обнаружена после обновления до версии 3.5, поэтому X server может падать при попытке запуска Openbox, в конце вы получаете такое сообщение:

    (metacity:25137): GLib-WARNING **: In call to g_spawn_sync(), exit status of a child process \
                       was requested but SIGCHLD action was set to SIG_IGN and ECHILD was received by waitpid(), so exit \
                       status can't be returned. This is a bug in the program calling g_spawn_sync(); either do not request \
                       the exit status, or do not set the SIGCHLD action.
    xinit: connection to X server lost
    waiting for X server to shut down

В этом случае, какие-то проблемы с пакетом metacity привели к падению X server. Удаление пакетов metacity и compiz-decorator-gtk решит проблему. Хотя, позже было замечено, что просто переустановка пакета может помочь, но сначала надо удалить старый пакет, а только потом ставить новый.

Притом, много похожих вариантов можно найти в Интернете, поэтому не только пакет metacity может быть причиной падения X server. Итак, если от какого-то другого пакета, кроме metacity вами было получено сообщение об ошибке, попробуйте переустановить его (или удалить) в попытке избавиться от этого сообщения X server.

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

Лишние приложения запускаются с вашей сессией Openbox, даже если они не находятся в вашем скрипте автозапуска ~/.config/openbox/autostart ?

Проверьте папку ~/.config/autostart/ , она может содержать файлы от прошлых ваших окружений рабочего стола (Gnome, KDE, etc.), и удалите ненужные файлы.

### SSH агент больше не запускается

В то время как Openbox 3.4.x разрешалось запускать SSH агента из $XDG_CONFIG_HOME/openbox/autostart{,.sh}, с 3.5 это больше не работает. Вам требуется положить ваш код в: $XDG_CONFIG_HOME/openbox/environment, например:

    SSHAGENT="/usr/bin/ssh-agent"
    SSHAGENTARGS="-s"
    if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
            eval `$SSHAGENT $SSHAGENTARGS`
            trap "kill $SSH_AGENT_PID" 0
    fi

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

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

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

## Полезные ссылки

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

Categories:

- Stacking WMs (Русский)
- Window managers (Русский)
- Русский