Установка и настройка i3wm на arch linux - igancev.ru blog

Установка и настройка i3wm на arch linux

Итак, мы установили arch, базово настроили систему, настало время установить графическое окружение.

А почему i3?

Ведь есть много других графических окружений рабочего стола (Desktop Environment, или коротко DE). И действительно, выбор на linux довольно велик, чего не скажешь конечно ни о Windows, ни о MacOs, где нет подобной гибкости в кастомизации. Я перепробовал разные окружения, и возможно в дальнейшем подробно расскажу о тех, с которыми имел дело. В целом у каждой оболочки есть свои плюсы, свои минусы. Своя история, философия, назначение, и целевая аудитория. А ставлю я все равно i3, и на это есть ряд причин.

Во - первых i3 - это не DE, а только оконный менеджер. Отличие в том, что в отличие от DE, оконный менеджер не имеет предустановленного ПО, программ по управлению и настройкой оболочки. Что отлично ложится в философию арча и под мои задачи, когда требуется по кирпичикам собрать минималистичную систему только с тем, что действительно нужно. i3 поддерживает возможности отрисовки окон, управления их расположением, работа с рабочими столами. Все остальное по кирпичиком собирается из других программ, которые можно заменить на аналоги, если что - то не устраивает.

Во - вторых, i3 относится к категории “тайлинговых” оконных менеджеров. Это означает, что окно по умолчанию разворачивается на весь экран, занимая все свободное пространство. Оболочка позволяет размещать несколько окон на экране, окна пропорционально делят пространство экрана. Тут проще показать, чем описать словами. В youtube или просто поиском по картинкам можно найти кучу видео и изображений с красиво настроенными и не очень окружениями i3. Я приведу скриншот своего экрана

Скриншот экрана оконного менеджера i3wm с шестью окнами различных открытых программ

Данный тип окружения с первого взгляда конечно может отпугнуть. Но на самом деле, используя все предоставляемые возможности, можно эффективно работать. Дело привычки и вкуса. К слову i3 не единственная в своем классе, есть и другие вроде awersome, sway, и т.д. Кстати любителям тайлинга советую обратить внимание на sway, который набирает популярность. Он содержит все фишки i3, только работает под графическим сервером wayland вместо стремительно устаревающего и уходящего xorg.

В-третьих, i3 создан для работы с клавиатурой, и в работе с ним волей не волей пользуешься горячими клавишами. Горячие клавиши тут имеют важную роль. И любителям все делать через клавиатуру должно понравиться.

В-четвертых, i3 благоволит минималистичности. Минимум UI нагроможденностей. Все настройки системы производятся из файловых конфигов. Можно использовать любые программы конечно же, но очень хорошо тут заходят именно минималистичные, консольные утилиты вроде ranger как файловый менеджер, и тому подобное.

В-пятых, это минимальные системные требования. Сам i3 легковесен и не прожорлив. Потребляет минимум оперативной памяти. Если у Вас слабое железо, то это несомненно большой плюс. У меня допустим в мак нет возможности добавить оперативной памяти, т.к. она распаяна. А сменить ноутбук пока не получается. Были попытки, но пока неудачные, возможно позже расскажу об этом в отдельной статье.

В-шестых это наверное уникальность. Из - за не большой распространенности как самого линукса, так и арча (по сравнению с убунто подобными), так и самой i3, выглядит оболочка довольно экзотично. И это не может не радовать) Когда вокруг у всех винда, маки, или “убунты на гномах”, i3 выделяется из толпы, как ни крути. И то, как быстро и удобно можно быстро укрощать с помощью нее свои задачи, поражает глаз случайных свидетелей. А это всегда повод завести беседу :-)

Итак я насчитал шесть причин. Возможно что - то упустил, но суть такова, что стоит один раз попробовать самому, а там уже решить, стоит оно того, или нет) Ведь действительно тайлинг не каждому зайдет.

Установка

i3 работает на графическом сервере x-org, поэтому нам потребуется установить его. Также мы установим не сам оригинальный i3wm, а его немного модернизированный форк i3-gaps. Еще сразу нам понадобится программа i3status для отображения системного бара, и программа dmenu для запуска установленных программ (которую в последствии заменим на аналог, rofi).

sudo pacman -S xorg-server xorg-xinit i3-gaps i3status dmenu

После установки создадим и отредактируем файл ~/.xinitrc, записав в него текст “exec i3”

echo 'exec i3' >> ~/.xinitrc

Эта инструкция при запуске графического сервера xorg запустит наш i3wm

И наконец, впервые запустим наш i3!

startx

Скриншот экрана оконного менеджера i3wm, Первый вид после установки

Настройка

После запуска i3 нас спросит о создании конфигурационного файла в домашней директории, согласимся, нажав Enter. Путь к файлу нам понадобится неоднократно для кастомизации. Далее i3 спросит о том, какую клавишу использовать по умолчанию для модификатора. Дело вкуса, я оставлю Win (на маке у меня Win - это Cmd)

Перед нами черный экран, т.к. не установлены обои, и пустота) На помощь придет официальная документация по i3 или любые другие ресурсы.

Горячие клавиши

Новичку потребуется выучить горячие клавиши для работы. Самое базовое, что нужно знать сейчас, это:

  • mod + Enter - запустить терминал
  • mod + d - запустить dmenu для запуска любой программы

Скриншот экрана оконного менеджера i3wm, Открыт терминал alacritty и dmenu

Скриншот экрана оконного менеджера i3wm, Открыт терминал alacritty и sublime

  • mod + Shift + q - закрыть активное окно программы

  • mod + 1, mod + 2, mod + …n - переключение рабочих столов от 1 до 9
  • mod + Shift + 1, mod + Shift + … n - перемещение активного окна на другой рабочий стол
  • mod + Shift + … ←, →, ↑, ↓ - изменение положения окон в рамках рабочего стола
  • mod + r - ресайз активного окна
  • mod + Shift + c - перечитать конфиг
  • mod + Shift + r - перезапуск i3
  • mod + Shift + e - выход из i3 с подтверждением
  • mod + Shift + space - перевод окна в плавающий режим

Это далеко не все хоткеи, все остальное можно увидеть на официальном сайте. Но на первых парах этого должно хватить.

mod - клавиша модификатора доступа, выбранная ранее. Это основная кнопка в i3, на ней завязано много горячих клавиш, как видно.

Любые биндинги горячих клавиш и остальные настройки i3 хранятся в ~./config/i3/config. У меня уже есть готовый конфиг с предыдущей системы. Никому не советую вслепую использовать чужие конфиги потому, что в люди подгоняют в любом случае все под себя. И Ваш конфиг у вас получится свой, уникальный. В сети куча конфигов разных людей. Есть также готовые темы оформления i3, стоит присмотреться к разным вариантам, в итоге собрав из всего понравившегося что - то свое, и потихоньку это подтачивать под свои нужды.

Немного о моем конфиге

При старте системы через программу setxkbmap устанавливается смена раскладки клавиатуры (установленная в /etc/vconsole.conf почему - то не задействована в i3)

sudo pacman -S setxkbmap
vim ~/.config/i3/config
# раскладка клавиатуры
exec --no-startup-id setxkbmap us,ru -option 'grp:alt_shift_toggle'

Также у меня есть отдельный материал по настройке раскладки клавиатуры в i3wm

Перед самой командой фигурирует ключевое слово exec, т.е. запуск, и параметр -no-startup-id, который нужен для того, чтобы курсор мыши не превращался в бесконечно крутящиеся часы. Похожим образом мы можем поставить любую программу или команду на автостарт i3.

Установим запуск firefox на сочетание горячих клавиш mod + F1 (файл ~/.config/i3/config)

bindsym $mod + F1 exec firefox

Все довольно просто, после ключевого слова bindsym следует сочетание клавиш, затем exec и имя программы.

Заменим dmenu на аналог rofi. Концептуально ничего нового, просто rofi мне больше нравится тем, что расположен не в баре, а плавающей строкой

sudo pacman -S rofi

Чтобы задействовать его вместо dmenu найдем в конфиге строку

bindsym $mod+d exec dmenu_run

и заменим ее на

bindsym $mod+d exec --no-startup-id rofi -show run

Скриншот i3wm и запущенного rofi

rofi имеет множество встроенных тем, посмотреть и выбрать подходящую для себя можно утилитой rofi-theme-selector, запустив ее в терминале. После выбранную тему установить как параметр -theme <имя_темы> в строке запуска в конфиге. Также шрифт я выбрал hack 10, Вы же можете использовать подходящий Вам шрифт.

bindsym $mod+d exec --no-startup-id rofi -theme glue_pro_blue -font "hack 10" -show run

Скриншот i3wm и запущенного rofi-theme-selector

Также никто не мешает найти и установить стороннюю тему, или создать свою собственную.

Разрешение монитора, второй монитор

В i3 конечно же можно работать с несколькими мониторами. Нам понадобится программа xrandr

sudo pacman -S xorg-xrandr

Запустив ее мы увидим список мониторов, и список поддерживаемых ими разрешений экрана. Мой macbook с экраном retina поддерживает 2560x1600. Это довольно большое разрешение для 13 дюймового экрана, поэтому у меня сейчас все очень мелко. Масштабирование в линуксах работает не очень, за исключением некоторых тяжеловесных DE как GNOME 3, там из коробки все намного лучше. Поэтому я буду довольствоваться 1920x1200, чего мне с головой хватит. На второй монитор мне потребуется установить разрешение 1920x1080.

Пропишу в конфиге i3

exec xrandr --output eDP-1 --mode 1920x1200 --pos 0x0
exec xrandr --output HDMI-2 --mode 1920x1080 --pos 1920x0

где eDP-1 - имя нативного монитора ноутбука, HDMI-2 - имя внешнего монитора, --mode 1920x1200 - устанавливаемое разрешение для монитора, --pos 0x0 - координата верхней левой точки монитора в разрезе двух рядом стоящих мониторов.

И специфично под macbook, мне необходимо подправить конфиг xorg для более четкого изображения https://wiki.archlinux.org/index.php/HiDPI#X_Resources

Xft.dpi: 96

! These might also be useful depending on your monitor and personal preference:
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

Вам не нужно, если у вас не HiDPI.

Установим обои на рабочий стол

куда ж без них. Нам поможет программа nitrogen, установим ее

sudo pacman -S nitrogen

Запустим nitrogen, настроим обои, и поставим ее на автозапуск

exec --no-startup-id nitrogen

Скриншот i3wm и рабочий стол с установленными обоями, луна

Установим compton

compton - легкий композитный менеджер для графического сервера X. Нам он нужен в первую очередь для устранения тиринга, если таковой присутствует, а также для создания небольших эффектов плавности переключения рабочих столов, чтобы было повеселее.

К слову о тиринге: способы его устранения для разных производителей видеокарт разнятся, и гуглится это на раз два (пример запроса: tearfree Nvidia, или AMD, или Intel). Устраняется в основном путем конфигурирования xorg.

У меня видеокарта Intel, и тиринг изначально на i3wm есть. Но compton решает данную проблему, без необходимости правки конфигов xorg.

На момент написания статьи из pacman и aur исчез пакет compton. Глубоко не искал, но наткнулся на информацию, что compton теперь стал picom (в других источниках написано, что compton это форк picom). Вообщем устанавливаем picom, а запускаем compton (может compton теперь лишь симлинк, проверим позже)

sudo pacman -S picom

В одном из конфигов он был установлен вместе с nitrogen в одну строку, так тому и быть

exec --no-startup-id nitrogen --restore; sleep 1; compton -b

Из моментально заметных изменений - это плавность переключения рабочих столов, а также поддержка прозрачности некоторых окон. Если тиринг не ушел, то можно попробовать переключить в конфиге backend на glx. По умолчанию шаблон конфига лежит в файле /etc/xdg/picom.conf.example. Для его кастомизации скопируйте его в домашнюю директорию следующей командой

mkdir -p ~/.config/picom && \
    cp /etc/xdg/picom.conf.example ~/.config/picom/picom.conf

Свой же последний конфиг я наглухо скопировал с этого репозитория https://github.com/dikiaap/dotfiles. Все плавно и красиво.

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

Цветовая температура экрана

Регулировать автоматическое переключение цветовой гаммы в более теплые тона будем программой redshift. Подробнее о redshift на archwiki. Я же буду краток. Ставим на автозагрузку в конфиг i3wm команду:

exec --no-startup-id redshift -b 1.0:0.7 -t 6500:3200 -l 45:39

где:

  • -b 1.0:0.7 уровень яркости день:ночь
  • -t 6500:3200 цветовая температура день:ночь
  • -l 45:39 укороченные координаты местонахождения latitude:longitude (ширина:долгота). Узнать свои координаты

Звук

Если не установили на этапе первичной настройки arch linux, то установим сейчас графическую утилиту для настройки звука pavucontrol

sudo pacman -S pavucontrol

Графическая утилита для настройки звука в linux pavucontrol

Bluetooth

Для того, чтобы работал bluetooth, необходимо установить ряд утилит

sudo pacman -S bluez bluez-utils pulseaudio-bluetooth blueman

из которых blueman - графическая утилита

Графическая утилита для настройки bluetooth в linux blueman

Для ее запуска наберем в rofi или dmenu blueman-applet, после чего увидим в трее иконку bluetooth с выпадающим по клику контекстным меню.

А кому по душе больше настройка bluetooth из командной строки необходимо набрать команду bluetoothctl, и затем help.

Но прежде чем подключать устройства, проверим запущена ли у нас служба bluetooth.service, и запустим, если не запущена:

# проверка
sudo systemctl status bluetooth.service

# запуск
sudo systemctl start bluetooth.service

# включение службы для автозапуска
sudo systemctl enable bluetooth.service

Ускорение подключения bluetooth девайсов

Если вы планируете пользоваться беспроводными мышью или клавиатурой, то для уменьшения задержки при bluetooth подключении рекомендую сразу выставить в конфиге /etc/bluetooth/main.conf параметр FastConnectable в значение true.

# /etc/bluetooth/main.conf
FastConnectable = true

После внесения изменений нужно перезапустить службу bluetooth:

sudo systemctl restart bluetooth

Подключение bluetooth девайсов должно стать более быстрым после включения компьютера или же после выхода из сна. Но если разницу вы не заметили, или для вас разница не критична, то лучше вернуть обратно значение false, т.к. включение влияет на энергопотребление, что актуально для ноутбуков. Это работает только для адаптеров, которые поддерживают это.

Num Lock

Я привык, что в обычном состоянии на клавиатуре Num Lock включен. В i3 же он выключен. Исправить это поможет консольная программа numlockx. Установим ее:

sudo pacman -S numlockx

У нее всего 3 команды:

  • onвключить
  • offвыключить
  • toggleвключить если выключено, или выключить если включено.

Остается поставить включение Num Lock на автозапуск i3wm:

# ~/.config/i3/config
exec --no-startup-id numlockx on

Шрифт

# Устанавливайте те шрифты, которые нравятся и подходят Вам
font pango:Ubuntu:style=Medium 10

Перенос бара наверх

В секцию bar добавим строку position top, и перезапустим i3 (mod+Shift+r)

bar {
        position top
        status_command i3status
}

Изучаем, пробуем

В одной статье невозможно описать абсолютно все. Я не затронул множество аспектов, таких как i3status (очень крутая штука, это кастомизируемый бар, который довольно страшненький по умолчанию), звук, подсветка клавиатуры, яркость экрана, и многое другое, чем не управляет i3 из коробки. Но он и не должен, и не позиционируется как DE. В нем мы должны настроить все сами. Кому не нравится - тому значит больше подходят полноценные DE, такие как GNOME, KDE, XCFE, и прочие (я лично переехал с Budgie). О некоторых из них поведаю в других статьях. Но основной посыл в том, что не стоит зацикливаться на первом попавшемся материале конкретного человека. Изучите дефолтный конфиг, документацию. Изучите множество мнений других людей. Берите лучшее из найденных конфигов, стройте свою уникальную систему. Не бойтесь гуглить, все скорее всего уже решено за Вас. А если нет - то есть уникальная возможность реализовать это у себя, и поведать об этом миру)