Установка и настройка Openbox

Openbox это минималистичный WM (Window Maker) с достаточно хорошими возможностями, но все же относящийся к разряду минималистичных. Установить его проще простого, особенно если в вашем дистрибутиве есть пакетный менеджер. Я не буду останавливаться на том как устанавливаются пакеты в том или ином дистрибутиве а сразу перейду к делу. После установки Openbox выглядит он конечно же жалко, ни тебе обоев, ничего кроме черного экрана. Для начала нам нужно подправить файл ~/.xinitrc (~ — означает вашу домашнюю директорию /home/user)

Открываем этот файл и прописываем в него данные для запуска сессии Openbox иначе при команде startx будет запускаться ваш прежний WM/DE.

exec openbox-session
#exec ck-launch-session gnome-session

В случае использования HAL и policykit вам нужно закоментировать первую строчку и раскоментировать вторую. Если этого не сделать то возможно внешние устройства не смогут монтироваться с помощью HAL. Я не использую лишних сущностей таких как HAL и потому у меня запускается просто exec openbox-session. Теперь при команде startx у вас будет запущена сессия Openbox, а мы сейчас приступим к улучшению его внешнего вида. Для того чтобы на рабочем столе отображались обои (как мы все привыкли) можно пойти двумя путями: Первый это использовать файл — менеджер PcmanFM в котором есть возможность задать картинку для рабочего стола И второй это использовать стороннюю программу feh. Я использую второй вариант, ибо просмотрщик фото изображений все равно нужен. Итак если у вас не установлен feh установим его и если нет файла ~/.fehbg то создадим его и открыв пропишем:

feh --bg-scale '/home/kernel/2vm8z74.jpg'

Где ‘/home/kernel/2vm8z74.jpg’ это путь до самой картинки, которая естественно должна там быть. Теперь пробуем перезапустить Openbox и видим что теперь у нас есть обоина (уже неплохо:)) Конечно этого мало и я опишу свой набор софта использующийся для «облагораживания» Openbox.

Панель — Tint2. Очень легкая и гибкая в настройке панель приложений с таскбаром и треем.

Индикатор раскладки — Sbxkb (спасибо W00zy). Легкий, написанный на GTK индикатор раскладок.

Терминал — Sakura. Не буду вдаваться в подробности чем лучше или хуже, просто я использую Sakura.

Системный монитор — Conky. Без них уже жить не могу. Вся нужная информация всегда на экране и занимает совсем немного места при горизонтальном положении.

Файл менеджер — PcmanFM. Тоже легкое, но функциональное приложение для работы с файлами.

Текстовый редактор — Tea или Teagtk. Оба они хороши. Tea написан на Qt, а TeaGTK соответственно на GTK+ . Также можно посмотреть в сторону Leafpad, очень легкий текстовый редактор не перегруженный функционалом обладающий молниеносной скоростью работы.  В принципе это все что нам нужно для начала. Теперь будем настраивать.

Конфиги Openbox лежат в

~/.config/openbox

и состоят из трех файлов: (autostart.sh — оттуда берутся данные о приложениях которые нужно запустить совместно с сессией Openbox) menu.xml (Здесь прописано меню Openbox которое появляется при нажатии ПКМ на любом месте рабочего стола и служащее для запуска программ) rc.xml (В этом конфигурационном файле описываются биндинги горячих клавиш и поведение окон). Для начала мы поправим

~/.config/openbox/autostart.sh

Откроем его и пропишем нужные программы в автозапуск. Мой autostart.sh выглядит так:

xmodmap ~/.Xmodmap ompmgr -cCfF -r7 -o.65 -l-10 -t-8 -D7 ompmgr -cC -r7 -o.65 -l-10 -t-8 -D7 &feh --bg-scale /home/kernel/2vm8z74.jpg &tint2 &sakura &#pcmanfm -d &#alltray --show --sticky --skip-taskbar -x -g +20+20 sakura --hide-menubar &sleep 5 &ompmgr -c -r10 -F -f -D5 -C -o0.8 &sleep 5 &&sbxkb &#bmpanel arch  &conky -d &#nohup sbxkb &#tint2#xxkb &
#fusion-icon &
#emerald --replace &

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

    firefox

 В этом меню прописан запуск веб браузер Firefox. Пункт которого будет отображен как Web Browser по ПКМ. С другими приложениями ситуация аналогичная.

Здесь отображено новое подменю «Preferences» с выпадающим пунктом «Edit menu.xml» с помощью которого легко запустить редактирование menu.xml с помощью текстового редактора teagtk по нажатию ПКМ.

   teagtk ~/.config/openbox/menu.xml

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

KeyRelease event, serial 39, synthetic NO, window 0x1600001,root 0x15d, subw 0x0, time 1206428, (89,89), root:(677,456),state 0x0, keycode 204 (keysym 0x1008ff42, XF86Launch2), same_screen YES,XLookupString gives 0 bytes: 
XFilterEvent returns: False

Как видно xev дал нам кейкод клавиши который мы в последствии будем использовать для Openbox. Теперь нам нужно открыть файл ~/.Xmodmap в который и пропишем все мультимедиа клавиши которые не работают. Пример этого файла можете увидеть ниже:

keycode 237 = XF86Video
keycode 236 = XF86Mail
keycode 178 = XF86HomePage
keycode 163 = XF86Messenger
keycode 177 = XF86LogOff
keycode 204 = XF86Launch2
keycode 253 = XF86Launch3
keycode 239 = XF86Launch1

Как видите все очень просто, не забываем что в autostart.sh у нас должна быть прописана команда

xmodmap ~/.Xmodmap &

без которой горячие клавиши не будут работать.

Для того чтобы присвоить клавише действие мы пропишем на нее действие в файле

~/.config/openbox/rc.xml. Например для клавиши XF86AudioPlay

                        true          Mocp Play                mocp -p      

Опишу подробнее процесс. Когда вы нажимаете какую либо клавишу ядро отлавливает это нажатие и передает свой сканкод в X — сервер, который в свою очередь преобразует сканкод ядра в собственный кейкод и сопоставляет его с таблицей имен клавиш в данном случае это XF86AudioPlay. Далее информация о нажатой клавише передается Openbox который получив информацию что нажата XF86AudioPlay ищет сопоставления этому имени клавиши в своем rc.xml и если совпадение находится то выполняется команда привязанная к этому имени клавиши. В примере эта клавиша должна выполнять команду mocp -p, то есть запускает аудиоплеер MOC на воспроизведение. Также обстоит дело и с другими горячими клавишами. Да, по началу это все трудно, но в последствии окажется легче. Также бывают случаи когда при нажатии клавиши xev не дает кейкода. У меня такое было и две клавиши не отлавливались xev. В этом случае нужно с помощью команды dmesg посмотреть какой сканкод для этой клавиши выдает ядро. Вводим в терминал команду dmesg и видим примерно следующее:

atkbd.c: Unknown key pressed (translated set 2, code 0x88 on isa0060/serio0).
atkbd.c: Use 'setkeycodes e008 ' to make it known.
atkbd.c: Unknown key released (translated set 2, code 0x88 on isa0060/serio0).
atkbd.c: Use 'setkeycodes e008 ' to make it known.

Нам нужно значение e008. Теперь с помощью getkeycodes смотрим свободные значения в таблице кейкодов и диапазоне 121 — 255.

Далее мы установим этот сканкод ядра так чтобы он был «привязан» к какому либо кейкоду X — сервера. Делается это командой setkeycodes, например так:

sudo setkeycodes e008 234

После этого пропишем назначенные кейкоды в файл ~/.Xmodmap присвоив им имена, а также не забываем сопоставить этим кейкодам команды в rc.xml которые будут отлавливаться Openbox при нажатии этой клавише. Далее выполним в терминале openbox —reconfigure и с радостью замечаем что это работает.

Теперь очень важный момент. Надо привязать сканкоды клавиш к кейкодам X — сервера. Иначе после перезагрузки они опять не будут работать так как нам хотелось бы. Для этого сканкоды ядра  нужно прописать в файл /etc/rc.local и при загрузке X — сервер уже будет знать что такой то сканкод клавиши выдаваемый ядром будет соответствовать такому то кейкоду его самого. Пример выглядит так:

#!/bin/bash
/usr/bin/setkeycodes e064 161
/usr/bin/setkeycodes e005 160
/usr/bin/setkeycodes e03c 162
/usr/bin/setkeycodes e016 167

Теперь для тех кто привык сидеть в окружении GNOME. Вам наверно будет трудно сразу быстро адаптироваться к новым условиям. Поэтому напишу несколько подсказок. Для того чтобы сменить тему GTK+ нужно подредактировать файл ~/.gtkrc-2.0 который находится в вашей домашней директории. Пример синтаксиса:

gtk-theme-name="LaGaDesk-MoNOChrome"gtk-icon-theme-name="LaGaDesk-BlackWhite-III"gtk-font-name="Trebuchet MS 13"gtk-toolbar-style=2
include "/home/kernel/.gtkrc-2.0.mine"

gtk-theme-name это та тема GTK+ которая используется в данное время, сменить ее на любимую вами можно путем замены имени темы в этой строке. Имя темы нужно брать из файла index.theme который лежит в директории с темой GNOME. Например ~/.themes/Brushed/index.theme. Аналогично поступаем и с заменой иконок интерфейса  (gtk-icon-theme-name) Как видно тут можно менять шрифт интерфейса для GTK приложений. Обратите внимание на строчку include. Она указывает нам на дополнительный файл конфигурации в котором настраивается отрисовка шрифтов. Ситаксис этого файла таков:

style "user-font"{font_name = "Trebuchet MS 13"}widget_class "*" style "user-font"gtk-font-name = "Trebuchet MS 13"gtk-xft-rgba = "rgb"gtk-xft-hintstyle = "slight"gtk-xft-antialias = 1gtk-xft-hinting = 1
gtk-xft-hintstyle = "hintslight"

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

Также нужно добавить эти настройки в ~/.Xresources. Синтаксис этого конфига таков:

Xft.dpi:96.0
Xft.hinting:true
!Xft.hintstyle:hintslight
Xft.antialias:true
Xft.rgba:rgb
!Xft.autohint:1

Тем самым мы установим DPI 96 и укажем «иксовым» приложениям использовать такие настройки для всех приложений. Тоже самое нужно добавить в ~/.Xdefaults. Для того чтобы Qt приложения использовали XFT нужно прописать в ~/.xinitrc следующее:

nvidia-settings -a GlyphCache=1
export GDK_USE_XFT=1
export QT_USE_XFT=1 USE_XFT=1
export QT_XFT=true

Хотя по заверениям Qt сейчас плевало на все это и вообще не понятно как отрисовывает шрифты.

Ну вот собственно и все. Я изложил весь комплекс настроек которые сделают ваш Openbox ничем не хуже GNOME, а иногда и гораздо удобнее.  Поверьте, используя Openbox вы удивитесь его скорости и отзывчивости.

Для того чтобы было проще разобраться я выложу свои конфиги Openbox.

Оцените статью