В современных графических оболочках концепция тайлига очень сильно недооценивается, примитивный тайлинг есть и в Windows и в таких оболочках как KDE, Gnome, XFce. Но все это лишь частичная поддержка тайлинга. По настоящему тайлинг отлично реализован в таких оконных менеджерах как Awesome, DWM, i3WM. И сегодня как раз поговорим о последнем.
Один из самых легких, удобных и гибких в настройке оконных менеджеров Linux это несомненно i3WM. Львиную долю своей популярности он получил благодаря очень простой настройке, и в этом гайде мы разберем конфиг i3wm с примерами конфигурации оконного менеджера.
Введение
Думаю многие читатели этого поста уже знают что такое динамический оконный менеджер — коим и является i3WM. А те кто не знает — сообщаю, оконные менеджеры (составная часть любого DE) делятся на два типа, стековые (плавающие окна) и фреймовые (окна располагаются мозаикой). А если все это смешать, то получиться гибрид в виде динамических оконных менеджеров, в которых окна могут переключаться из плавающего режима в фреймовый.
Не важно почему вы выбрали именно i3wm среди многих других динамичных оконных менеджеров… Будто простота настройки (в чем вы убедитесь ниже), его легкость по сравнению с другими или же просто по совету более опытного линуксойда. Для начала я предлагаю рассмотреть что мы будем иметь из коробки после установки i3wm:
- i3 — Собственно сам оконный менеджер
- i3bar — «Родная» панель в i3wm все что умеет это отображение рабочих столов и строку терминала
- i3status — Отображение некоторой информации строчкой терминала
- i3lock — Экран разблокировки компьютера
Теперь давайте разберемся со всем по порядку.
Настройка i3WM
После запуска нас встретит окно выбора mod клавиши. Будет два варианта Meta (windows кнопка) и Alt. После запуска перед собой мы будем видеть только i3bar с запущенным в ней i3status и больше ничего.
В качестве терминала по умолчанию используется xterm — запускается комбинацией Mod+Enter. Не будем пока зацикливаться на управлении, уясним лишь то, что бы закрыть окно нужно нажать Mod+Shift+q , а что бы перезапустить i3 — Mod+Shift+r.
Теперь давайте проясним для себя то что нам надо
- Обои — Для этого будем использовать Nitrogen
- Лаунчер приложений — Тут есть много вариантов, рассмотрим мы только самые популярные
- Анимации и VSync — Для этого нам понадобится композитор, я предлагаю Compton потому что он легкий и стабильный
Устройство конфига в i3WM
По умолчанию конфиг i3WM находится в папке ~/.config/i3
Вообще для того чтобы виртуозно работать с конфигом i3wm надо всего лишь знать что все что идет после # — комментарий, и еще три вещи :
1) Запуск программ происходит с помощью exec, для того чтобы наш оконный менеджер что то запустил используем следующий шаблон
- Пример
При запуске i3 — запуститься и композитор compton - Пример
При запуске i3 — запуститься скрипт который лежит в домашней папке под именем script.sh - Пример
При запуске i3 — запуститься nitrogen с опцией restore
2) Установка переменных. В i3wm можно создать переменные, работает это все как define в C++. На место переменной встанет заданная ей строчка. Переменные можно задать с помощью set.
- Пример
Переменной $color задано значение #023537 - Пример
Переменной $fileManager заданное значение pcmanfm-qt
Переменные удобно использовать создавая блок настроек, дабы потом не бегать по конфигу i3wm и не искать нужный пункт.
3) Комбинации клавиш задаются с помощью bindsym, синтаксис предельно прост
- Пример
При нажатии mod клавиши и цифры 1 — мы перейдем на рабочий стол 1. - Пример
При нажатии кнопки Tools — запустится FireFox - Пример
При нажатии заданной в переменной кнопки — будет выполнена заданная в другой переменной программа.
В начале конфига стоит поправить пару строчек на свой вкус :
set $mod Mod4 # Установка mod клавиши
font pango:xos4 Terminus 8 # Установка шрифта для рамок окна
Теперь давайте поглубже копнем в создание горячих клавиш.
Скорей всего у вас на клавиатуре будет 6той ряд клавиш, который хочется использовать по полной. Что бы узнать имя клавиши я использую xev.
Запустите xev , и наведя на белое окно нажимайте нужную клавишу что бы узнать ее имя. Для удобства анализа 6го ряда запускайте его так
xev | grep XF
Этого было бы достаточно если бы не пару проблем с которыми я столкнулся когда пытался настроить некоторые клавиши.
1) Регулировка громкости. Я использую pactl для этих целей, и для работы кнопок +- и переключения состояния микрофона и звука я использую вот такие бинды
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -5%
bindsym XF86AudioMute exec pactl set-sink-mute 0 toggle
bindsym XF86AudioMicMute exec pactl set-source-mute alsa_input.pci-0000_00_1b.0.analog-stereo toggle
2) Регулировка яркости. Вообще вряд-ли это будет проблемой, но для того что бы более менее избавить вас от гугления — я просто покажу как это делается
Внешний вид
Рамки окон
Изменить размер рамок окна по умолчанию можно с помощью new_window pixel <Размер рамки в пикселях> - я себе поставил 1, только чтобы видеть границы окон.
Цвет рамок окна можно задать по шаблону
Классы окон:
client.focused — окно в фокусе
client.unfocused — окно вне фокуса
client.focused_inactive — окно в фокусе но не активно
client.urgent — окно требует внимания (всплывающее уведомление например)
Пример настройки цвета;
# class border backgr. text indicator child_border client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577 client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a client.unfocused #333333 #222222 #888888 #292d2e #222222 client.urgent #2f343a #900000 #ffffff #900000 #900000 client.background #ffffff
Ну и думаю стоит привести пример настройки цветов i3bar - все по той же схеме, только немного другие теги.
Классы индикаторов рабочих столов:
- focused_workspace — Рабочий стол в фокусе;
- active_workspace — Активный рабочий стол;
- inactive_workspace — Неактивный рабочий стол;
- urgent_workspace — На рабочем столе есть приложение которое требует внимания;
Примернастройки цветов для i3bar:
bar { colors { background #000000 statusline #ffffff separator #666666 focused_workspace #4c7899 #285577 #ffffff active_workspace #333333 #5f676a #ffffff inactive_workspace #333333 #222222 #888888 urgent_workspace #2f343a #900000 #ffffff } }
Внешний вид приложений
Для настройки внешнего вида приложений надо будет попотеть.
Начнем с простого — настройки GTK+
Все что нам надо, это лишь программа lxappearance,в ней можно настроить иконки , тему GTK и курсора.
Теперь сложнее — настройка Qt.
Для настройки Qt нам нужно будет всего два приложения qt4config и qt5ct.
Запускаем qt4config — выбираем тему , шрифт и т. п. - все.
Но вот если мы запустим qt5ct то увидим сообщение о отсутствии переменной среды. Чтобы исправить нам надо будет отредактировать файл Xsession, т.к я использую sddm — то у меня он находиться по адресу /usr/share/sddm/scripts/Xsession. В него нам надо добавить строчку — после чего перелогинимся и уже спокойно можем запустить qt5ct и там провести настройку
По мимо стандартных тем для Qt можно выбрать движок тем. Советую обратить внимание на Kvantum - это SVG based движок для Qt. Простой в настройке, тем пока что мало, но то что есть выглядят очень круто и футуристично.
Анимации и VSync
Мы с вами уже условились что для обеспечения красивой анимации будем использовать композитор compton, сейчас я не буду писать про то как надо настраивать его, т.к пост про i3WM а не про compton, просто покажу с чего стоит начать.
Добавим в конфиг
И после перезапуска получаем красивые переходы, прозрачность и главное вертикальную синхронизацию, все очень просто !
Обои
Про обои мы тоже договорились что будем использовать nitrogen. Запускаем его, выбираем обоину и радуемся, все что остается, это только добавить в конфиг
Conky
Это необязательный пункт, но я подумал что стоит и его упомянуть, тут я просто покажу как надо запускать коньки в i3wm
Информации по настройке коньков в интернете уйма, от себя добавлю лишь то — что стоит исключить их из обработки теней в compton.
Лаунчер Приложений
Вообще под Linux есть уйма различный лаунчеров, рассмотрим самые популярные.
- Dmenu - каноничный лаунчер, по факту это выпадающая строка терминала с автодополнением. Минималистичный и легкий.
- Xfce AppFinder - лаунчер приложений из окружения XFace, основан на GTK+ , не сказать что удобное решение, но он простой и понятный.
- Rofi - Достаточно гибкий лаунчер, по мимо простого запуска приложений умеет навигацию по окнам и ssh клиент.
Вывод
Прочитав этот гайд вы точно сможете настроить оконный менеджер i3WM под себя, и иметь неповторимую среду рабочего стола. Лично от себя могу добавить что именно благодаря знакомству с i3WM я осознал насколько гибок Linux, и что можно работать именно с теми инструментами которые тебе удобны. В этом плане i3WM тебя не ограничивает, надо лишь только посидеть за конфигом.
Настоятельно рекомендую прочесть Официальный гайд
Ну раз уж такое дело, то думаю ShowMyDesktop тред в комментариях будет не лишнем.
Спасибо за внимание !