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

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



2017-01-25T20:49:02
Оформление