Меню Рубрики

Установка и настройка archlinux openbox

LaurVas

Openbox window manager — стэковый оконный менеджер для графической системы X Window.

Как-то не попадались мне душевные рассказы про Openbox на просторах рунета. А зря, ибо хороший он. В этой статье я хочу поделиться своим опытом формирования полноценного окружения на его основе. Мне результат нравится.

Почему именно Openbox?

Почему оконный менеджер, а не готовое DE? Я хотел сделать себе эффективный инструмент, обустроить рабочее место. Пришлось повозиться, но результат того стоит. Готовые решения в виде Cinnamon/Mate/Gnome/XFCE/KDE наследуют традиционный интерфейс. В них много лишнего.

Под линукс существует масса оконных менеджеров, и на знакомство со всеми уйдет уйма времени. Но в этом нет необходимости — стековые оконные менеджеры работают примерно одинаково и имеют примерно одинаковый набор возможностей — выбирай любой. Для себя я выделил несколько достоинств опенбокса.

Минимализм и строгость. Всё что вы получаете на голом опенбоксе — это меню по клику на рабочем столе. Никаких спецэффектов, обоев, панелей, лончеров. Опенбокс сосредотачивается на управлении окнами и делает это хорошо: быстро работает и потребляет мало ресурсов.

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

Богатые возможности по настройке. И это, пожалуй, самый весомый плюс. Основной конфиг rc.xml представляет собой хорошо структурированный xml-документ. Если вы не знаете что такое xml, то у вас есть шанс с ним познакомиться, просто настраивая этот оконный менеджер. Основные настройки можно менять галочками и ползунками через утилиту obconf. Самое то для знакомства.

Привычное поведение. Знакомые окошечки, кнопочки, комбинации клавиш. Не надо перестраивать мозг как в случае с тайловыми Awesome, Xmonad, DWM, i3. Мы будем использовать те же горячие клавиши, что используются в Windows: Alt + Tab , Alt + F4 , Win + стрелка и др. и сделаем даже лучше.

Популярность. Openbox входит в состав LXDE, на котором основан дистрибутив Lubuntu, а это серьёзно.

Проведём небольшой эксперимент. Посмотрим сколько результатов Google смог найти для разных оконных менеджеров (на момент написания статьи).

Запрос Количество
site:archlinux.org openbox 50400
site:archlinux.org fluxbox 13400
site:archlinux.org icewm 3410
site:linux.org.ru openbox 7680
site:linux.org.ru fluxbox 5780
site:linux.org.ru icewm 2960

Даже если Openbox не лучший, он уже достаточно хорош.

Установка и запуск

Тут всё просто: качаем пакет openbox . Если вы не используете графических логин-менеджеров (slim, lightdm, gdm, kdm), то для запуска необходимо добавить exec openbox-session в

/.xinitrc . Данный скрипт выполняется, когда мы запускаем X-сервер командой startx .

/xinitrc непонятные строчки в начале! Так вы рискуете выключить автозапуск чего-нибудь нужного.

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

Базовая настройка утилитой obconf

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

Обратите внимание, что тема отвечает только за внешнюю рамку окна и меню на рабочем столе. Внутренностями окна занимается библиотека GTK или QT. Для настройки GTK рекомендую утилиту lxappearance :

Вернёмся к obconf. На вкладке “Внешний вид” настраиваются шрифты и набор управляющих кнопок в заголовке окна.

Можно разместить все кнопочки заголовка слева, как в Mac OS, или оставить только крестик, как вам больше нравится. Вариантов много. Размер кнопок, как и высота заголовка, зависит от размера шрифта. Если вам кажется, что рамка съедает ценное пространство, то можно её отключить. Позже я покажу как это сделать.

Окно сохраняет границу когда нет декорации (Windows retain a border when undecorated) — это тёмная однопиксельная рамка, которая отрисовывается вокруг окна, чтобы как-то отделить его от фона. Функция работает только если у окна выключены декорации.

Декорации включены на всех окнах

Без декораций, но с однопиксельной рамкой

Без всего — полный минимализм

На вкладке “Перемещение и изменение размера” настраивается прилипание границ окна к другим окнам или краям экрана.

Окно может автоматически переместиться на другой рабочий стол, если во время перемещения какое-то время подержать его у края экрана. Задержка указывается в милисекундах. Мне нравится когда подобные вещи можно указать с высокой точностью. В Windows и, уж тем более Android, у вас в лучшем случае будет выбор из трёх значений: быстро, средне, медленно.

Фокус на окне, когда курсор мыши перемещается по нему (Focus windows when the mouse pointer moves over them) — очень приятная опция, рекомендую включить. Особенно если вы часто работаете в нескольких окнах, расположенных рядом. С этой опцией окно становится активным, если переместить указатель мыши в его зону. С выключенной опцией надо ещё и кликнуть. Казалось бы, смешная экономия в один клик… Но без него переключение на другое окно проходит плавнее и быстрее.

Уже очень давно Linux поддерживает несколько виртуальных рабочих столов. Я рекомендую начать с двух. Если этого покажется мало, добавьте ещё один. Если и трёх не хватает, то это повод задуматься о замене монитора на больший или о покупке второго.

Отступ нам понадобится для панели, в моём случае это tint2.

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

Горячие клавиши используются для запуска приложений и управления окнами. Дефолтный конфиг уже содержит наиболее распространённые комбинации, такие как Alt + Tab , Alt + F4 . Возможно вам захочется дополнить ассортимент своими комбинациями.

Для настройки горячих клавиш существует графическая утилита obkey , однако я и без неё отлично всё настроил руками в конфигурационном файле

/.config/openbox/rc.xml . Если в вашем домашнем каталоге нет этого файла, значит вы, скорее всего, не запускали obconf. В этом случае возьмите дефолтный конфиг из /etc/xdg/openbox/ .

Для правки конфига я рекомендую редактор Geany. Потому что там есть подсветка синтаксиса и классный фолдинг (Документ → свернуть все). Далее нам надо раскрыть секцию .

Обычные клавиши обозначаются своими привычными именами. Для клавиш-модификаторов используются обозначения:

S для Shift
C для Ctrl
A для Alt
W для Win
M для Meta

Если имя клавиши сложно определить по тому, что на ней нарисовано, спасёт утилита xev . Запускаем её в терминале, нажимаем нужную клавишу и смотрим вывод после слова keysim . Например, клавиша PageUp называется Prior :

Пример для запуска терминала lxterminal по Ctrl + Alt + T :

Здесь всё понятно кроме тэга startupnotify . Что это такое? Это оповещение “окружающего мира” о запуске приложения через механизм startupnotification. Мне известно только одно применение данного механизма: в промежуток времени между запуском приложения и появлением его окна курсор мыши меняет форму на песочные часы или крутилку (или нечто аналогичное). Некоторые приложения не поддерживают startupnotification — как правило либо древние (xterm), либо сделанные на скорую руку.

Практический совет: включать startupnotify стоит только для тяжёлых приложений, которым требуется несколько секунд для запуска. Т.е. в этом примере он не нужен.

А это пример перемещения окна на левую или правую половину экрана по хоткею Win + ← и Win + → соответственно:

Начало координат находится в левом верхнем углу экрана (или окна). Числовые значения координат и ширины можно указывать по-разному: в пикселях, в процентах, в виде простой дроби. Отрицательные числа имеют свой смысл, можно даже указать два знака +-3 . Подробнее см. вики на сайте проекта.

Больше примеров для изучения вы найдёте в дефолтном конфиге — он весьма неплохой.

Если что-то непонятно — читайте официальную документацию или русский перевод. Возможностей очень много. Реализованы практически все мыслимые операции над окнами. Есть даже условные конструкции (if.. then.. else.. ).

Единственное, чего не хватает лично мне в управлении окнами — несколько вариантов расположения окна по одному хоткею, как это сделано в WinSplit Revolution. Вместо множества хоткеев хочется иметь один, который будет циклически перебирать различные варианты расположения окна: левая треть, левая половина, две трети слева. Не отрицаю, что и это можно сделать при желании. Для чего-то же были добавлены условные конструкции.

Особые правила для приложений

Кастомные настройки для конкретных приложений задаются в секции конфига rc.xml .

Хотим, чтобы браузер всегда запускался в полноэкранном режиме и на втором рабочем столе:

Хотим, чтобы текстовый редактор Geany и pdf-смотрелка Evince всегда открывались раздвинутыми по вертикали (maximized vertical):

Здесь же можно отключить рамку (декорации) для всех окон и выиграть 30 пикселей по высоте:

Теперь управлять окнами можно только с клавиатуры:

Alt + F4 закрывает окно;
Win + ↓ сворачивает окно в панель задач (iconify);
Win + ↑ разворачивает окно на весь экран (maximize);
Alt +мышь перемещает окно по экрану;
Alt + пробел открывает контекстное меню окна, через которое можно изменить размер, закрепить поверх других окон или отправить на определённый рабочий стол:

Чтобы узнать параметры конкретного окна (name, class, role, type), поможет утилита obxprop :

Панель задач tint2

Без панели задач на помощь приходит средняя кнопка мыши и Alt + Tab , но всё равно с окнами работать не очень удобно. Арчвики рекомендует две панели: tint2 и pypanel . Можно взять lxpanel и получить почти LXDE. Я же влюбился в tint2.

Очень гибко настраивается. Регулируются габариты, размеры элементов, отступы, шрифты, цвета. Есть где развернуться в творческом порыве.

Умеет отображать задачи сразу всех рабочих столов, а не только текущего. Это позволяет видеть картину в целом: где что запущено и быстро переключаться между окнами.

Эффективно использует площадь. Можно выжать максимум из ширины монитора — нет лишних кнопок, ярлычков, отступов, декоративных элементов. Только список запущенных приложений, трей и часы! Хм… может и часы убрать?

Нет меню приложения по правому клику. Поначалу такое поведение может показаться топорным, но практика показывает, что это очень удобно. По крайней мере в Windows я это меню использую только чтобы закрывать окна. В tint2 всё просто и быстро:

  • правый клик по задаче без всяких менюшек закрывает приложение,
  • левый клик по неактивной задаче переводит фокус и делает окно активным,
  • левый клик по активной задаче сворачивает соответствующее окно.

Ничего лишнего. Tint2 не умеет запускать приложения (в свежих версиях умеет?), не умеет показывать меню, не имеет плагинов. Конфигурация панели описывается в текстовом файле.

Для настройки панели есть графические утилиты tint2conf и tintwizard , но учтите — они удаляют все комментарии из конфига. Возможно сейчас уже нет, но лучше подстраховаться бэкапом.

Устройство панели

Вся панель состоит из нескольких объектов:

  • панель быстрого запуска (launcher),
  • панель задач (taskbar),
  • трей (systray),
  • индикатор заряда аккумулятора (battery),
  • часы (clock).

Панель задач состоит из отдельных панелей для каждого десктопа, если включена соответствующая опция. И уже на этих панелях появляются задачи (tasks), которые могут находиться в состояниях:

  • неактивном,
  • активном,
  • свёрнутом (iconified),
  • требующем внимания (urgent).

Вот такая вот иерархия. Задачи в данном контексте — это окна приложений.

Каждому объекту панели задач нужно назначить набор свойственных ему параметров и стиль. Стиль определяет параметры фона и рамки:

  • цвет фона,
  • толщину рамки,
  • цвет рамки,
  • радиус скругления углов.

Все цвета имеют альфа-канал, он указывается через пробел.

В начале конфигурационного файла задаются стили без привязки к конкретным объектам. Явного объявления стилей в конфиге нет, меня это поначалу сбивало с толку. Они просто идут по порядку, начиная с единицы. Можно объявить столько стилей, сколько нужно. Стили присваиваются объектам при описании объектов. Подробнее о настройке панели читайте в официальном руководстве.

По клику на часах можно запускать некоторое приложение. Сложность в том, чтобы закрыть это приложение: надо как-то определять PID процесса, чтобы убить его. Если руки чешутся что-нибудь смастерить, то посмотрите в сторону календарей на dzen2 . А если возиться неохота, возьмите gsimplecal . По первому клику он покажет календарь, а по второму сам закроется.

Если вы будете переделывать панель по своему вкусу, то в процессе творчества вам понадобится заставить tint2 перечитать свой конфиг. Для этого надо убить существующий процесс и запустить новый:

Может пригодиться ключ -c — указать отличный от дефолтного конфиг.

Мой конфиг

Мой конфиг лежит на гитхабе. Ключевые особенности:

  • Максимальное использование доступной площади.
  • Опция mouse_right = close закрывает окно по правому клику на панели задач.
  • Сразу видны окна всех рабочих столов.
  • Высота панели — 28 пикселей. Это оптимальный размер, подобранный мной в процессе долгих поисков.

Почему я выбрал такие цвета? Именно такой серый цвет не отвлекает от работы, хорошо сочетается с редактором Sublime Text и дефолтным серым фоном. Хорошо читаются состояния задач, особенно активное окно.

Смена и индикация раскладки клавиатуры

Я долго не мог понять зачем линуксоиды назначают смену раскладки на CapsLock , а потом попробовал и… Восторг! Традиционный капс нафиг не нужен, а если вдруг приспичит, то его можно включить по Shift + CapsLock . Привыкнув переключать раскладку по CapsLock , вы уже не вернётесь назад.

Прописать клавиатурное комбо для смены раскладки можно в автостарт индивидуально для пользователя, либо в конфиг иксов — для всех пользователей. На моей машине в глобальном конфиге прописана смена по Alt + Shift :

А в автозапуске — по CapsLock :

В результате работают оба сочетания. Хорошая идея — использовать для индикации раскладки лампочку Scroll Lock на клавиатуре. Я даже перепаял светодиод с зелёного на красный по такому поводу.

На ноутбуке этой лампочки обычно нет и для индикации раскладки целесообразно использовать значок в трее. В линуксах традиционно это флаг страны.

Помимо индикации текущей раскладки жизненно необходимая опция — это запоминание раскладки для каждого окна. Например код я пишу на английском, а переписку в мессенджере веду на русском; переключаясь между окнами мне не нужно каждый раз менять язык.

Я могу посоветовать три утилиты, все умеют запоминать раскладку для окон.

  1. kbdd ничего не показывает в трее,
  2. sbxkb показывает флаги в трее, но не имеет никаких параметров — всё жестко прописано в коде, даже размер значков.
  3. xxkb аналогична sbxkb, но уже имеет конфигурационный файл.

Я долгое время использовал xxkb, но из-за изредко возникающих глюков пересел на sbxkb. Работает без сбоев, но при смене конфигурации экрана (поворот, разрешение) исчезает из трея, хотя процесс продолжает работать.

Отзывчивость клавиатуры

Раз уж я коснулся клавиатурной темы, расскажу про маленькую настройку, которая позволяет быстрее скроллить, перемещаться по тексту или стирать. Когда я хочу стереть что-то длинное, то зажимаю Backspace и смотрю как курсор бежит назад, забирая лишние буквы. Что при этом происходит? Как только я нажимаю Backspace , стирается один символ, затем идёт небольшая задержка, затем срабатывает автоповтор: Backspace убирает символы один за другим, как если бы я постоянно по нему стучал.

Я рекомендую вам отрегулировать задержку и частоту работы автоповтора под скорость своих пальцев. Задержка перед срабатыванием автоповтора нужна когда вы хотите удалить только один символ — она даёт вам время отпустить клавишу.

Слишком долгая задержка заставляет ждать автоповтора. Не настолько долго, чтобы раздражать, но достаточно, чтобы тормозить перенос мыслей из головы в компьютер. Слишком короткая задержка приведёт к тому, что автоповтор начнёт работать когда этого не требуется. Чем выше частота повтора, тем быстрее стирается текст, и тем сложнее успеть вовремя остановить этот процесс. Суть настройки заключается в поиске золотой середины.

190 — длительность задержки в миллисекундах,
20 — частота в количестве повторений в секунду.

Я рекомендую начать с этих значений и понемногу уменьшать задержку до появления ложных срабатываний, затем чуть-чуть вернуть назад. Если установить очень короткую задержку, то вы потеряете возможность пользоваться клавиатурой. Придётся перезагружать X-сервер или компьютер целиком. Так что будьте аккуратнее.

Чтобы параметры применялись самостоятельно, добавляем эту команду в

/.xinitrc до команды exec openbox-session или в

/.config/openbox/autostart . Первый скрипт выполняется при запуске X-сервера командой startx , второй — только при запуске опенбокса.

Настроить отзывчивость клавиатуры и скорость указателя мыши можно из графической утилиты lxinput , однако изменения действуют только до перезапуска X-сервера, т.к. lxinput сохраняет выставленные настройки в

/.config/lxsession/LXDE/desktop.conf , а этот файл кроме LXDE никто не смотрит.

Скорость указателя мыши задаётся командой xset m . Подробнее см. man xset .

Лончеры

Как программы-то запускать? Только горячими клавишами? Ведь нет ни “Пуска”, ни значков на рабочем столе! Суровые админы обойдутся одним лишь терминалом, но нас такой вариант не устраивает. Какие есть альтернативы?

  • всё запихнуть в менюшку опенбокса,
  • сделать ярлычки на панели tint2 ,
  • сделать ярлыки на рабочем столе ( idesk , xfdesktop ),
  • запускать приложения по имени из лончера ( dmenu , gmrun ),
  • сделать красивые иконки снизу (а-ля Mac OS) средствами cairo-dock .

Для себя я нашёл оптимальный способ запуска программ — с клавиатуры.

Gmrun

Эта небольшая утилита написана на языке C с использованием библиотеки GTK+2. Минимум кода, минимум функционала, минимум настроек. По сути это аналог Ctrl + R в Windows.

Будет логично повесить gmrun на тот же хоткей. Для этого в конфиге опенбокса в секции добавляем строки:

Dmenu

Лончер на основе dmenu описан в отдельной статье.

Обои на рабочий стол

Хочу порекомендовать утилитку feh и такую строчку в автозапуск:

Теперь при старте опенбокса вы получаете случайные обои из папки

Однажды я два дня собирал коллекцию красивых обоев. А потом отключил их нафиг и удалил. Ибо отвлекает.

Как-то Сисадмин спросил:
— Учитель, не желаете ли красивую картинку для вашего десктопа? У меня есть коллекция “обоев для рабочего стола” со звёздным небом и моральным законом.
— Почему ты думаешь, что мой нынешний “wallpaper” хуже? — спросил в ответ Инь Фу Во.
— Я не знаю, какая у вас картинка сейчас. Я никогда не видел вашего десктопа. У вас всегда открыто множество окон.
— Я тоже его никогда не видел, — сказал почтенный Инь. — Я работаю.

Блокировка экрана

Чтобы никто не смог воспользоваться компьютером во время вашего отсутствия, включайте блокировку экрана. Голый опенбокс этого делать не умеет, но ему на помощь отлично приходит утилита slock . В заблокированном состоянии она ничего не выводит на экран. Во время ввода пароля заливает экран голубым цветом. Если пароль введён неверно, заливает экран красным. Цвета заливки не настраиваются, они жёстко прописаны в коде. Если вас это не устраивает, посмотрите на i3lock и его продвинутый форк.

Вместо простого запуска slock по хоткею Win + L я добавил в конфиг опенбокса чуть более интересную конструкцию:

Через секунду после блокировки выключается фоновая подсветка монитора (backlight).

Кстати, при вводе пароля выручает индикация раскладки лампочкой scrol lock, потому что пароль, набранный не в той раскладке, не подходит, а другой индикации текущей раскладки нету.

В заблокированном состоянии slock не даёт возможности переключиться на свободную консоль по Ctrl + Alt + F1…F6 . Так что обойти его нельзя. Но один способ всё-таки есть. Надо зайти на заблокированную машину по ssh и убить процесс:

О чём я мог бы написать, но не написал

  • Полупрозрачность окон, по-моему абсолютно ненужная.
  • Димминг (затемнение) неактивных окон. Я использовал compton , мне понравилось.
  • Возможности меню по правому клику.
  • Автозапуск приложений. Там вроде не сложно.
  • Менеджер буфера обмена (clipboard manager). Вещь нужная, но у меня до неё руки не дошли.
  • Приложения по-умолчанию для разных типов файлов (default applications).
  • Тайлинг средствами pytile2. Я не пробовал.

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

источник

Читайте также:  Установка буровых установок на судно

Добавить комментарий

Adblock
detector