среда, 11 января 2017 г.

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

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

Краткое содержание: Настройка меню 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

Из самых популярных я выделил бы PyPanelTint2 и 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, добавьте в этот раздел следующие строки:
 key="A-F2">
 name="Execute">
gmrun


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


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

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

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

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

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

Мультимедиа клавиатура и 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), биндите клавишу как обычно:
 key="0x7A">
 name="Execute">
amixer sset Front 1+




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