Настройка i3WM

Настройка i3WM

Логотип i3WM


В современных графических оболочках концепция тайлига очень сильно недооценивается, примитивный тайлинг есть и в 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 и больше ничего.


Окно выбора Mod клавиши


В качестве терминала по умолчанию используется xterm — запускается комбинацией Mod+Enter. Не будем пока зацикливаться на управлении, уясним лишь то, что бы закрыть окно нужно нажать Mod+Shift+q , а что бы перезапустить i3 — Mod+Shift+r.


Теперь давайте проясним для себя то что нам надо


  • Обои — Для этого будем использовать Nitrogen

  • Лаунчер приложений — Тут есть много вариантов, рассмотрим мы только  самые популярные

  • Анимации и VSync — Для этого нам понадобится композитор, я предлагаю Compton потому что он легкий и стабильный



Памятка стандартных хоткеев i3WM

Устройство конфига в i3WM


По умолчанию конфиг i3WM находится в папке ~/.config/i3


Вообще для того чтобы виртуозно работать с конфигом i3wm надо всего лишь знать что все что идет после # - комментарий, и еще три вещи :

1) Запуск программ происходит с помощью exec, для того чтобы наш оконный менеджер что то запустил используем следующий шаблон



exec <команда>


Пример

exec compton 


При запуске i3 — запуститься и композитор compton
Пример

exec ~/script.sh


При запуске i3 — запуститься скрипт который лежит в домашней папке под именем script.sh
Пример

exec nitrogen - -restore


При запуске i3 — запуститься nitrogen с опцией restore

2) Установка переменных. В i3wm можно создать переменные, работает это все как define в C++. На место переменной встанет заданная ей строчка. Переменные можно задать с помощью set.



set $<имя переменной> <значение>


Пример

set $color #023537


Переменной $color задано значение #023537
Пример

set $fileManager pcmanfm-qt


Переменной $fileManager заданное значение pcmanfm-qt

Переменные удобно использовать создавая блок настроек, дабы потом не бегать по конфигу i3wm и не искать нужный пункт.


3) Комбинации клавиш задаются с помощью bindsym, синтаксис предельно прост



bindsym <комбинация> <действие>


Пример

bindsym $mod+1 workspace 1


При нажатии mod клавиши и цифры 1 — мы перейдем на рабочий стол 1.
Пример

bindsym XF86Tools exec firefox


При нажатии кнопки Tools — запустится FireFox
Пример

set $press XF86Search

set $search dmenu

bindsym $press $search


При нажатии заданной в переменной кнопки — будет выполнена заданная в другой переменной программа.

В начале конфига стоит поправить пару строчек на свой вкус :




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) Регулировка яркости. Вообще вряд-ли это будет проблемой, но для того что бы более менее избавить вас от гугления — я просто покажу как это делается



bindsym XF86MonBrightnessUp exec xbacklight -inc 6

bindsym XF86MonBrightnessDown exec xbacklight -dec 6


Внешний вид


Рамки окон


Кнопки управления окном в i3wm заменены хоткеями


Изменить размер рамок окна по умолчанию можно с помощью 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
}
}

Внешний вид приложений


Логотип Qt


Для настройки внешнего вида приложений надо будет попотеть.

Начнем с простого — настройки GTK+

Все что нам надо, это лишь программа lxappearance,в ней можно настроить иконки , тему GTK и курсора.


Теперь сложнее — настройка Qt.

Для настройки Qt нам нужно будет всего два приложения qt4config и qt5ct.

Запускаем qt4config — выбираем тему , шрифт и т. п. - все.

Но вот если мы запустим qt5ct то увидим сообщение о отсутствии переменной среды. Чтобы исправить нам надо будет отредактировать файл Xsession, т.к я использую sddm — то у меня он находиться по адресу /usr/share/sddm/scripts/Xsession. В него нам надо добавить строчку  

export QT_QPA_PLATFORMTHEME="qt5ct"
— после чего перелогинимся и уже спокойно можем запустить qt5ct и там провести настройку

По мимо стандартных тем для Qt можно выбрать движок тем. Советую обратить внимание на Kvantum - это SVG based движок для Qt. Простой в настройке, тем пока что мало, но то что есть выглядят очень круто и футуристично.


Анимации и VSync


Логотип CompizFusion


Мы с вами уже условились что для обеспечения красивой анимации будем использовать композитор compton, сейчас я не буду писать про то как надо настраивать его, т.к пост про i3WM а не про compton, просто покажу с чего стоит начать.


Добавим в конфиг

exec compton -f --vsync drm


И после перезапуска получаем красивые переходы, прозрачность и главное вертикальную синхронизацию, все очень просто !

 Обои


Интерфейс Nitrogen


Про обои мы тоже договорились что будем использовать nitrogen. Запускаем его, выбираем обоину и радуемся, все что остается, это только добавить в конфиг

exec nitrogen --restore

Conky


Conky достаточно популярный виджет в мире Linux


Это необязательный пункт, но я подумал что стоит и его упомянуть, тут я просто покажу как надо запускать коньки в i3wm

exec conky -c ~/.config/i3/conky_c


Информации по настройке коньков в интернете уйма, от себя добавлю лишь то — что стоит исключить их из обработки теней в compton.

Лаунчер Приложений


Вообще под Linux есть уйма различный лаунчеров, рассмотрим самые популярные.


  • Dmenu - каноничный лаунчер, по факту это выпадающая строка терминала с автодополнением. Минималистичный и легкий.

  • Xfce AppFinder - лаунчер приложений из окружения XFace, основан на GTK+ , не сказать что удобное решение, но он простой и понятный.

  • Rofi - Достаточно гибкий лаунчер, по мимо простого запуска приложений умеет навигацию по окнам и ssh клиент.


Вывод


i3WM автора


Прочитав этот гайд вы точно сможете настроить оконный менеджер i3WM под себя, и иметь неповторимую среду рабочего стола. Лично от себя могу добавить что именно благодаря знакомству с i3WM я осознал насколько гибок Linux, и что можно работать именно с теми инструментами которые тебе удобны. В этом плане i3WM тебя не ограничивает, надо лишь только посидеть за конфигом.


Настоятельно рекомендую прочесть Официальный гайд


Ну раз уж такое дело, то думаю ShowMyDesktop тред в комментариях будет не лишнем.

Спасибо за внимание !


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

Автору будет очень приятно получить обратную связь.

Комментариев 0