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

On: 13 октября 2010 г.


После длительных скитаний по разным DE и WM я пришел к OpenBox. Слышал про него и раньше. Даже пробовал ставить. Но сейчас понимаю что наверное я сильно был занят что пропустил его мимо. Кратко о OpenBox:
Openbox — свободный менеджер окон для X Window System, распространяемый под лицензией GNU General Public License. Изначально Openbox произошёл от Blackbox 0.65.0, но затем был полностью переписан на языке Си и с версии 3.0 не базируется на программном коде Blackbox.
Openbox разработан маленьким и быстрым, он поддерживает много функций, таких, как меню, с помощью которого пользователь может управлять приложениями.
Мое мнение:
Мой Openbox. Сутки после установки
Если вам необходима высокая производительность это ваш выбор. Так же как и E17 OpenBox позволит комфортно работать на старых компьютерах. Но по сравнению с E17 OpenBox не гонится за званием среды рабочего стола и потому среду рабочего стола собрать предоставляется самому пользователю. Возможно именно этот фактор для меня оказался самым привлекательным. OpenBox выбор истинного минималиста.
Собственно эта статья посвящена сборке среды рабочего стола на основе менеджера окон OpenBox:
После установки и входа в OpenBox вы окажитесь на пустом рабочем столе лишенным всяких панелей, значков и обоев. Полагаю что первым делом вам захочется настроить элементарные части, для создания комфортной работы.
Панель задач
Панель tint2
Я видел несколько сносок на панель задач для OpenBox. Выбор не так велик. Для себя я выбрал довольна молодой проект tint2. Его преимущества это необычный подход к отображению панели. А именно то что панель можно расположить как скринлет. Углы у панели и ее элементов можно округлять что в месте едва заметной прозрачностью создает необычный тандем. Все настройки можно изменять в файле ~/.config/tint2/tint2rc. Здесь пример как настраивать панель на странице проекта (на английском). Пример моего файла конфигурация:

#---------------------------------------------
# TINT2 CONFIG FILE
#---------------------------------------------

#---------------------------------------------
# BACKGROUND AND BORDER
#---------------------------------------------
rounded = 3
border_width = 1
background_color = #EDE9E3 60
border_color = #776E6D 100

rounded = 5
border_width = 1
background_color = #776E6D 40
border_color = #EDE9E3 100

rounded = 5
border_width = 1
background_color = #CFC7BA 18
border_color = #776E6D 100

#---------------------------------------------
# PANEL
#---------------------------------------------
panel_monitor = all
panel_position = top center
panel_size = 100% 30
panel_margin = 0 0
panel_padding = 7 0
font_shadow = 0
panel_background_id = 1
wm_menu = 0
panel_dock = 0
panel_layer = normal

#---------------------------------------------
# TASKBAR
#---------------------------------------------
#taskbar_mode = multi_desktop
taskbar_mode = single_desktop
taskbar_padding = 2 3 2
taskbar_background_id = 0
#taskbar_active_background_id = 0

#---------------------------------------------
# TASKS
#---------------------------------------------
task_icon = 1
task_text = 1
task_maximum_size = 140 35
task_centered = 1
task_padding = 6 3
task_font = sans 7
task_font_color = #1A1A1A 70
task_background_id = 3
task_icon_asb = 100 0 0
# replace STATUS by 'urgent', 'active' or 'iconfied'
#task_STATUS_background_id = 2
#task_STATUS_font_color = #ffffff 85
#task_STATUS_icon_asb = 100 0 0
# example:
task_active_background_id = 2
task_active_font_color = #1A1A1A 85
task_active_icon_asb = 100 0 0
urgent_nb_of_blink = 8

#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
systray = 1
systray_padding = 0 4 5
systray_background_id = 0
systray_sort = left2right
systray_icon_size = 0
systray_icon_asb = 100 0 0

#---------------------------------------------
# CLOCK
#---------------------------------------------
time1_format = %H:%M
time1_font = sans 8
time2_format = %A %d %B
time2_font = sans 6
clock_font_color = #1A1A1A 76
clock_padding = 1 0
clock_background_id = 0
#clock_lclick_command = xclock
clock_rclick_command = orage
#clock_tooltip = %A %d %B
#time1_timezone = :US/Hawaii
#time2_timezone = :Europe/Berlin
#clock_tooltip_timezone = :/usr/share/zoneinfo/Europe/Paris

#---------------------------------------------
# BATTERY
#---------------------------------------------
battery = 1
battery_hide = 0
battery_low_status = 10
battery_low_cmd = notify-send "battery low"
bat1_font = sans 8
bat2_font = sans 6
battery_font_color = #1A1A1A 76
battery_padding = 1 0
battery_background_id = 0

#---------------------------------------------
# TOOLTIP
#---------------------------------------------
tooltip = 0
tooltip_padding = 2 2
tooltip_show_timeout = 0.7
tooltip_hide_timeout = 0.3
tooltip_background_id = 1
tooltip_font_color = #1A1A1A 80
tooltip_font = sans 10

#---------------------------------------------
# MOUSE ACTION ON TASK
#---------------------------------------------
mouse_middle = none
mouse_right = wm_menu
mouse_scroll_up = toggle
mouse_scroll_down = iconify

#---------------------------------------------
# AUTOHIDE OPTIONS
#---------------------------------------------
autohide = 0
autohide_show_timeout = 0.3
autohide_hide_timeout = 2
autohide_height = 4
strut_policy = minimum

Обои рабочего стола

OpenBox не умеет сам сохранять и отображать обои на рабочем столе. В сети распространены примеры установки обоев с помощью feh но после короткого времени его использования я понял что подбирать обои под настроение теперь у меня так легко не получиться. feh требует при авто запуске указывать адрес адрес изображения, а мысль о том что при смене обоев на рабочем столе мне необходимо будет переписывать руками (либо дополнительно писать программу) файл авто запуска (о нем поговорим позже) вызывает у меня отвращение. Потому я искал дальше пока не наткнулся на программу nitrogen в отличии от feh nitrogen использует графический интерфейс. Достаточно запустить программу с параметром в качестве каталога с изображениями (для удобства можно добавить подобный пункт к контекстному меню папок в файловом менеджере). Появиться небольшое окно с миниатюрами в котором можно выбрать не только само изображения для рабочего стола но и метод его расположения на рабочем столе. Если при таком выборе в окне выбрать пункт Сохранить то для восстановления обоев после перезагрузки будет достаточно запустить nitrogen с параметром --restore. И не каких файлов править дополнительно не понадобиться:) Недостатком nitrogen считаю небольшой список методов отображения картинки на рабочем столе.
Настройка раскладки клавиатуры

Если у вас уже стоял какой не будь DE либо при установке уже успели указать необходимое количество раскладок клавиатуры. остается лишь запустить индикатор раскладки и настроить так что бы раскладка клавиатуры была уникальная для каждого окна. Здесь без компромиссов по советам многочисленных поклонников OpenBox выбираем xxkb. xxkb это универсальный индикатор раскладки клавиатуры с возможностью определения раскладки для каждого окна, приложения индивидуально. Его конфигурационный файл можно создать (если его еще там нет) по адресу ~/.xxkbrc. Вот простой пример настройки xxkb:

XXkb.controls.two_state: no
XXkb.controls.add_when_start: yes
XXkb.controls.add_when_create: yes

XXkb*label.text.1: En
XXkb*label.text.2: Ru
XXkb*label.text.3: Ua

XXkb.mainwindow.type: tray
XXkb.mainwindow.label.enable: yes
XXkb.mainwindow.enable: yes
XXkb.mainwindow.appicon: no
XXkb.mainwindow.geometry: 20x20+0+0
XXkb.mainwindow.in_tray: KDE2
XXkb.mainwindow.label.background: #EDE9E3
XXkb.mainwindow.label.foreground: black
XXkb.mainwindow.label.font: -misc-*-r-*-13-*

XXkb.button.enable: no
У меня xxkb не корректно читал файл настроек и при перезагрузках уже по другому реагировал на его содержимое. Проблема была решена установкой версии 1.11-2.1

Настройка горячих клавиш

Для примера будем ставить на комбинацию клавиш Alt + F2 (так сложилось исторически и я не стал придумывать другой вариант) утилиты запуска программ. Она называется gmrun. Не скажу что на установку ее меня подтолкнули заметки других пользователей но раньше на Windows я пользовался программой Typeandrun потому ставил gmrun чисто из личных предпочтений. Возможно есть программы и лучше gmrun но на данный момент она меня устраивает полностью, потому отпадает необходимость искать аналоги. Конфигурационный файл gmrun храниться в ~/.gmrunrc. И так задача поставить запуск программы gmrun на комбинацию клавиш Alt + F2. Все горячие клавиши OpenBox хранит в файле ~/.config/openbox/rc.xml. Для того что бы поставить запуск программы на "горячие клавиши" надо изменять строки в этом файле. Вот пример установки запуска gmrun на комбинацию клавиш Alt+F2.
   
     
        gmrun
     

   

Создание скриншота
Пример файла ~/.gmrunrc:

# gmrun configuration file
# gmrun is (C) Mihai Bazon,
# GPL v2.0 applies

# Set terminal
Terminal = screen
#TermExec = ${Terminal} -bg black -fg white -geometry 100x60 -e
TermExec = ${Terminal}
AlwaysInTerm = ssh telnet ftp lynx mc vi vim pine centericq perldoc man

# Set window geometry (except height)
Width = 300
Top = 500
Left = 500

# History size
History = 256

# Shows last history line selected when invoked
ShowLast = 0

# Show files starting with '.'
# Default is 0 (off), set it to 1 if you want "hidden" files to show up
# in the completion window
ShowDotFiles = 0

# Timeout (in milliseconds) after which gmrun will simulate a TAB press
# Set this to NULL if don't like this feature.
TabTimeout = 0

# URL handlers
# If the entered text is "http://www.google.com" then:
#   - %u gets replaced with the whole URL ("http://www.google.com")
#   - %s gets replaced with "//www.google.com".  This is useful for URL-s
#     like "man:printf" --> %s will get replaced with "printf"
URL_http = firefox "%u"
URL_ftp = firefox "%u"
URL_mailto = firefox "%u"
URL_man = ${TermExec} "man %s"
URL_info = ${TermExec} "info %s"
URL_pd = ${TermExec} "perldoc %s"
URL_file = firefox "%u"
URL_readme = ${TermExec} 'most /usr/doc/%s/README'
URL_sh = sh -c "%s"
URL_bash = bash -c "%s"

# extension handlers
EXT:doc,rtf = abiword %s
EXT:txt,cc,cpp,h,java,html,htm,epl,tex,latex,js,css,xml,xsl,am = vim %s
EXT:ps = gv %s
EXT:pdf = acroread %s


Выключение и перезагрузка компьютера

Конечно вы удивитесь тому факту что в этой новой среде рабочего стола вы не найдете графических способов управления работой компьютера (имеется в веду выключение и перезагрузка компьютера). Но это только на первый взгляд. OpenBox имеет возможность управлять работой gdm с помощью команды gdm-control. Достаточно запускать ее с ключами --shutdown и --reload. Соответственно вам захочешь как минимум поместить эти полезные команды в меню OpenBox. Настройка меню храниться в файле ~/.config/openbox/menu.xml. Он представляет из себя xml структуру. Конечно его можно отредактировать вручную но для этих целей можно поставить obmenu. И добавить необходимые пункты в меню.


Вот все уже почти готово к работе. Почему почти? Осталось еще два немало важных пункта настройки.
Во первых после перезагрузки компьютера вы вернетесь к тому же с чего и начинали после первой загрузки OpenBox. По умолчанию никакая программа выбранная вами не будет отправлена на автозагрузку. То есть картинки на рабочем столе не будет так как нужно еще запустить nitrogen с параметром --restore. Панель tint2 тоже к сожалению сама не загрузиться. и это касается всего что должно авто загружаться при запуске рабочего стола.
 
Автозагрузка в OpenBox
 
Для того что бы программы автоматически запускались при старте OpenBox их нужно прописать в сценарии автозагрузки. Для OpenBox он находиться (либо его нужно создать) по адресу ~/.config/openbox/autostart.sh. Вот мой пример этого файла:
tint2 &
conky -c ~/.conkyrc1 &
xxkb &
/usr/bin/kdeinit &
kbluetooth &
nitrogen --restore &

Во вторых рано или поздно но вам захочется немного настроить OpenBox под себя. Как минимум поменять тему строки заголовка окна и меню OpenBox. Эти все настройки хранятся в файле ~/.config/openbox/rc.xml. И опять для упрощения работы с ним предлагается установить программу obconf.


Вот собственно и все. План минимум выполнен. Еще посоветую использовать для изменения тем иконок и тем GTK программу lxappearance. Создана она была для среды рабочего стола LXDE на базе оконного менеджера OpenBox потому можно сказать она нативная для него.

lxappearance

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


Я и до сих пор остаюсь фанатом E17 но OpenBox лучший выбор для минималиста.

6 коммент. on "Установка и настройка OpenBox"

Анонимный комментирует...

feh тоже может при загрузке ставить последнюю используемую картинку. Для этого в autostart.sh нужно вписать строчку "eval `cat ~/.fehbg` &&"

CryptSpirit комментирует...

Я выбрал nitrogen потому что есть возможность просмотра обоев в списке (+список натравливается на определенную папку, это отсекает не нужные картинки). Да и применять на лету изображения к рабочему столу и смотреть результат это удобно. Я люблю консольные приложения но иногда гуй это быстро.

Анонимный комментирует...

Ну это скорее дополнение к статье (кстати, там надо один знак &). Чтобы читатели не входили в заблуждение :)

CryptSpirit комментирует...

насчет дополнений к статье. решил дополнить небольшим "фокусом". Как настроить клавиши мультимедиа в OpenBox

1. Запускаем xev
2. Жмем клавиши
3. Перебиваем (с помощью printf "%X\n" номер клавиши) в hex
4. описываем в rc.xml
5. profit

mwy комментирует...

Статья отличная.
Избавляет от необходимости долго гуглить и выбирать, как раз то, что нужно.
Спасибо!

Анонимный комментирует...

конфиг tint2 пригодился, никак не мог настроить трей нормально