Настройка i3WM

i3WM Logo

Логотип 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
  2. Пример
    exec ~/script.sh
    При запуске i3 — запуститься скрипт который лежит в домашней папке под именем script.sh
  3. Пример
    exec nitrogen - -restore
    При запуске i3 — запуститься nitrogen с опцией restore

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

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

  1. Пример
    set $color #023537
    Переменной $color задано значение #023537
  2. Пример
    set $fileManager pcmanfm-qt
    Переменной $fileManager заданное значение pcmanfm-qt

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

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

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

  1. Пример
    bindsym $mod+1 workspace 1
    При нажатии mod клавиши и цифры 1 — мы перейдем на рабочий стол 1.
  2. Пример
    bindsym XF86Tools exec firefox
    При нажатии кнопки Tools — запустится FireFox
  3. Пример
    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 тред в комментариях будет не лишнем.
Спасибо за внимание !

11 комментариев

  1. Валентин Январь 26, 2017 Ответить
  2. user Март 23, 2017 Ответить
    • s Июль 3, 2017 Ответить
    • )) Февраль 14, 2018 Ответить
  3. Alex Март 29, 2017 Ответить
    • Кирилл Март 29, 2017 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: