Настройка 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 <команда>

 

    1. Примерexec compton

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

 

    1. Примерexec ~/script.sh

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

 

    1. Примерexec nitrogen - -restore

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

 

 

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

 

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

 

    1. Примерset $color #023537

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

 

    1. Примерset $fileManager pcmanfm-qt

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

 

 

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

 

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

 

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

 

    1. Примерbindsym $mod+1 workspace 1

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

 

    1. Примерbindsym XF86Tools exec firefox

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

 

    1. Пример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 тред в комментариях будет не лишнем.

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