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.