/ Статьи / Графика и GUI / Настройка и использование OpenBox Window Manager /

Настройка и использование OpenBox Window Manager

Дата публикации: April 10, 2010, 12:56 p.m.
Теги: openbox, настройка,
Автор: Brainsburn

OpenBox Logo Краткое содержание: Настройка меню OpenBox; автозапуск программ в OpenBox; установка тем оформления; установка фона рабочего стола; панель задач и системный трей; лаунчер программ; горячие клавиши и мультимедиа клавиатура в OpenBox.

Решил я сменить свой FluxBox на что-нибудь другое. Единственная причина - известный баг, при котором многие флэш-анимации (если честно, ненавижу флэш) на сайтах не реагируют на нажатие кнопок мыши. Частично эта проблема решалась прописыванием export GDK_NATIVE_WINDOWS=1 в ~/.bashrc , но все-равно на многих сайтах проблема оставалась.

FluxBox меня радовал всем. Быстрый и незаметный - вот каким должен быть оконный менеджер, на мой взгляд. Я пробовал динамические тайловые оконные менеджеры типа Awesome и Xmonad но, как говорится, это не мое. Поэтому, когда от FluxBox пришлось отказываться, мой выбор пал на OpenBox.

Установив OpenBox командой emerge openbox и добавив строку openbox вместо строки startfluxbox в файл ~/.xinitrc (чтобы OpenBox запускался по startx), и перезапустив иксы, я попал (куда бы вы думали?) в дефолтный опенбокс. Возможно, если бы вместо FluxBox у меня был установлен KDE или Gnome, я бы испугался такому виду - черный экран, нету даже панели задач и лишь меню, появляющееся по правому клику мыши, дает понять, что это именно OpenBox. Но, это пройденный этап - мы видали и не такое ;)

В первую минуту был обнаружен глюк - окно Conky стало отображаться поверх всех остальных окон. Вылечился он очень быстро - в ~/.conkyrc надо было заменить строку own_window_type override на own_window_type normal

Настройка меню OpenBox

Первым делом было решено настроить меню. Для этой цели я решил воспользоваться графической утилитой obmenu (устанавливается отдельно). Я скопировал дефолтный конфиг в домашнюю директорию и запустил obmenu

$ mkdir ~/.config/openbox && cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml
$ obmenu
Эта утилита ничего не делает автоматически, она всего-лишь позволяет отказаться от копания в XML коде. Кстати, после добавления нового меню, не забудьте добавить link на это меню в рутовое меню "Openbox 3", иначе ваше новое меню не будет отображаться. Чтобы изменения вступили в силу, нужно сохранить меню в Obmenu и выбрать System - Reconfigure Openbox в основном меню OpenBox, перезапускать иксы не нужно =)

Автозапуск программ в OpenBox

При запуске иксы смотрят файл ~/.xinitrc . Если его у вас нету - создайте. В него можно прописывать команды для тех программ, которые нужно запускать автоматически. Вот пример:

$ cat ~/.xinitrc
psi &
qutim &
conky &
xxkb &
feh --bg-scale /files/Pictures/Абстракции/organic.jpg &
tint2 &
openbox
Обратите внимание - команда openbox идет последней и после всех команд, идущих перед ней, стоит символ &. Если в этом примере "tint2 &" изменить на "tint2", то openbox не запустится, пока не завершится процесс tint2.

Установка фона рабочего стола в OpenBox

Знаете, возможно существуют удобные программки для быстрой смены фона на рабочем столе с GUI и всякими плюшками, но я меняю фон не чаще чем раз в месяц (раньше менял чаще, со временем это прошло), поэтому для установки обоев я воспользовался утилитой feh:

$ feh --bg-scale /files/Pictures/Абстракции/organic.jpg
Эту же команду нужно добавить в ~/.xinitrc , тогда нужный вам фон будет устанавливаться каждый раз при запуске иксов. Причем этот способ не привязан к оконному менеджеру и будет работать везде.

Установка тем оформления в OpenBox

Я уже было приготовился открывать конфигурационный файл в текстовом редакторе, но обломался - почти во всех мануалах советуют использовать графическую утилиту obconf, которая позволяет удобно менять темы оформления, устанавливать новые темы да и вообще конфигурить OpenBox под собственные нужды. Через нее можно сделать, чтобы по двойному клику на заголовке окна оно привычно сворачивались в заголовок вместо разворачивания на весь экран; изменить шрифты, изменить кол-во рабочих столов и т.д. Довольно удобная тулза :)

Панель задач и системный трей в OpenBox

Из самых популярных я выделил бы PyPanel, Tint2 и fbpanel. Последняя мне показалось слишком навороченной, поэтому ее я отложил в сторонку. PyPanel довольно легка и хороша, но мне больше понравилась Tint2, уж не знаю почему. Пользователи Gentoo при установке Tint2 могут выбрать флаг examples, тогда tint2 установится вместе с несколькими примерами конфигурационных файлов, которые будут лежать в /usr/share/doc/tint2-0.9/examples/ . Дефолтный файл конфигурации tint2 называется ~/.config/tint2/tint2rc . Конфиг очень прост и интуитивен - мне хватило пяти минут, чтобы методом тыка привести tint2 панель в нужный мне вид. Для того, чтобы tint2 стартовала автоматически, я добавил строку tint2 & в ~/.xinitrc .

Лаунчер программ в OpenBox

В FluxBox лаунчер был сразу и вызывался сочетанием alt-F2. В OpenBox его надо ставить отдельно. Посоветую или grun или gmrun. Как сделать, чтобы они вызывались по сочетанию клавиш, читайте ниже в части "Горячие клавиши в OpenBox"

Горячие клавиши в OpenBox

Сочетания горячих клавиш настраиваются в ~/.config/openbox/rc.xml Ctrl-Alt-Left - переместиться на предыдущий рабочий стол
Ctrl-Alt-Right - переместиться на следующий рабочий стол
Shift-Alt-Left - переместить активное окно на предыдущий рабочий стол
Shift-Alt-Right - переместить активное окно на следующий рабочий стол
Windows-F1..F4 - перейти на нужный рабочий стол (1..4)
Настраиваются горячие клавиши в разделе keyboard Для того, чтобы по Alt-F2 вызывался лаунчер gmrun, добавьте в этот раздел следующие строки:

<keybind key="A-F2">
<action name="Execute">
<command>gmrun</command>
</action>
</keybind>
Остальные программы биндятся аналогично. Запомните - вместо Alt пишите A, вместо Ctrl - C, вместо Windows - W, вместо Shift - S
В моем дефолтном конфиге OpenBox не было таких биндингов как Alt-F10 для распахивания окна на весь экран и Alt-F9 для сворачивания. Привожу примеры бинда клавиш для управления окнами:
Переключатель Распахнуть окно на весь экран
<keybind key="A-F10">
<action name="ToggleMaximizeFull"/>
</keybind>

Переключатель Максимизировать окно по вертикали
    <keybind key="A-F8">
          <action name="ToggleMaximizeVert"/>
              </keybind>

Свернуть окно в панель задач
    <keybind key="A-F3">
          <action name="Iconify"/>
              </keybind>

Переключатель Максимизировать окно по горизонтали
    <keybind key="A-F9">
          <action name="ToggleMaximizeHorz"/>
              </keybind>

Переключатель Растянуть содержимое окна на весь экран
    <keybind key="A-F12">
          <action name="ToggleFullscreen"/>
              </keybind>

Переключатель Снять/Показать декорации окна
    <keybind key="A-S-d">
          <action name="ToggleDecorations"/>
              </keybind>

Мультимедиа клавиатура и OpenBox

Во FluxBox я назначал мультимедиа клавиши в файле ~/.fluxbox/keys , узнавая код клавиш утилитой xev. В OpenBox есть одна тонкость - код клавиш нужно перевести в 16-ричную систему счисления. Например, вы хотите забиндить какую-то мультимедиа клавишу на увеличение громкости звука ALSA. Запускаете в терминале утилиту xev, нажимаете нужную клавишу и смотрите ее keycode. Там будет что-то вроде этого:

KeyRelease event, serial 39, synthetic NO, window 0x1e00001,
root 0x15a, subw 0x0, time 1613305, (627,558), root:(655,831),
state 0x0, keycode 122 (keysym 0x1008ff11, XF86AudioLowerVolume),
same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Жирным текстом выделено нужное. Теперь это число (122) нужно перевести в 16-ричное. Делается это просто:
$ printf "%X\n" 122
7A
К этому числу нужно добавить спереди "0x", т.е. получится "0x7A". Теперь, используя этот код клавиши (0x7A), биндите клавишу как обычно:
<keybind key="0x7A">
<action name="Execute">
<command>amixer sset Front 1+</command>
</action>
</keybind>



Ну и под конец привожу краткий список софта, который пригодится тем, кто использует WM вместо DE.
Настройка OpenBox - obconf, obmenu и... vim =))
Использование темы GTK для Qt программ - qtconfig.
Выбор темы GTK - gtk-theme-switch
Панель задач и системный трей - PyPanel, fbpanel или tint2
Автоматическое монтирование флешек и CD/DVD дисков - ivman или autofs
Лаунчер (запуск программ по Alt-) - grun или gmrun
Установка фона рабочего стола - консольный feh или графический nitrogen
Отдельная раскладка клавиатуры для каждого окна - xxkb
Создание скриншотов - scrot
Логин менеджер для иксов - Slim


Скриншоты OpenBox

Немного скриншотов из просторов Интернета

OpenBox OpenBox OpenBox window manager OpenBox оконный менеджер OpenBox OpenBox OpenBox OpenBox OpenBox OpenBox

Видео скринкасты OpenBox







Возможно, эти материалы Вас заинтересуют:


Рекомендовать эту страницу:

Комментарии:(13)

# Гость July 28, 2010, 3:49 a.m.
Amazing! I'm looking for some dock/applauncher for this wm!

# Brainsburn July 29, 2010, 10:16 a.m.
Гость thanks! You can try tint2 panel and gmrun launcher

# Guest Jan. 16, 2011, 6:43 p.m.
Одно время тоже использовал openbox. Только не смог решить проблему "tearing"'`а в видео, которая в kwin/compiz решается включением вертикальной синхронизации в их настройках.

# lenar_aga Feb. 24, 2012, 3:17 p.m.
Интересная статья!
Последний скриншот (где время 2:06am)… где нашел?) коньки там настроены красиво. конфиги где найти такие не подскажешь?)

# Brainsburn Feb. 25, 2012, 12:59 p.m.
lenar_aga, скриншот нашел в Интернете, так что насчет конфигов подсказать не могу, к сожалению.

# Toutlemond March 23, 2012, 10:43 a.m.
lenar_aga
У меня такой почти что конфиг коньков. Могу выслать…
Brainsburn
Спасибо за статью. А то я как раз как тот опысоваевый юзер кто с гнома залез на опен бокс и очень удивился. Но теперь нравиться!

# yandzee May 5, 2012, 3:38 p.m.
Кто может дать ссылку на фон (wallpaper) на том скрине где время 2:06am?

# володя May 9, 2012, 11:08 a.m.
зачем в .xinit так много писать? Есть же .config/openbox/autostart

# brainstream Nov. 4, 2012, 3:50 a.m.
Эту же команду нужно добавить в ~/.xinitrc , тогда нужный вам фон будет устанавливаться каждый раз при запуске иксов.
На самом деле, feh пишет команду, которой был установлен фон, в файл ~/.fehbg. Поэтому правилнее в ~/.xinitrc писать что-то вроде
eval $(cat ~/.fehbg) &

# mihalych Nov. 13, 2012, 12:13 a.m.
зачем в .xinit так много писать? Есть же .config/openbox/autostart
А затем, что статья ИМХО писалась с помощью копипасты, или другим извр… способом без ковыряния в openbox`е. Работать не будет же! Особенно feh. А не правильнее ли будет в .xinitrc записать
 exec openbox-session 
??? Автору статьи совет - RTFM openbox!
ЗЫж просьба не удалять этот комментарий.

# Brainsburn Nov. 14, 2012, 1:48 p.m.
mihalych, не нервничайте так. Пример с feh работает.
Статья писалась 2 года назад, собственноручно, исходя из личного опыта, с целью помочь другим. То, что в ней есть ошибки - нормально. Ничего идеального не существует. По поводу openbox-session - согласен, этот вариант более предпочтителен. Можете написать лучше - вперед. А посылать друг друга в rtfm - не лучший вариант.

# administrator March 6, 2016, 8:35 p.m.
Спутниково тв без абонплаты - https://satbiling.com/register.php?partner=7861

# BPOH April 29, 2016, 10:35 a.m.
Хорошая статья спасибо!

Комментировать:

Гость, Вы можете оставить свой комментарий.

Стиль кода:
Имя
Сайт * не обязательное поле
Поставьте галку, если вы - бот
Поставьте галку, если вы - человек

Друзья! Убедительная просьба воздержаться от нецензурной лексики!



Справка:
Если вы хотите использовать в тексте комментария специальные символы, например, [ и ], используйте их внутри тега [code] [/code]
Вы можете использовать теги BBcode. Для оформления кода и подсветки синтаксиса используйте тег [code] или [code=название_языка], например, [code=python]
Ссылки вставляйте так: [url]zenux.ru[/url] или так: http://zenux.ru, но не так: zenux.ru
Текст сообщения должен быть в пределах 3000 символов.




Последние комментарии:

Eugene: Галка, внешний вид изменить совершенно не сложно.... >>>
Галка: А сильно сложно Убунту переделывать?... >>>
Brainsburn_: “Написание в 1-й” подразумевает “в первой”, а не в... >>>
ZZZ: “Написание в 1-й” подразумевает &ldquo... >>>
SBOdin: Спасибо за полезное руководство... >>>