Конфигурация i3 под ноутбук: как свести производительность на 100%?
Недавно я понял, что мой ноутбук недостаточно производителен. Ему не хватает мощности вывезти всё вместе: Vim (+ 20 плагинов), VSCode (+ столько же расширений), Google Chrome (+ 20 вкладок) и так далее. Казалось бы, обычная проблема на ноутбуках с 4 ГБ ОЗУ, однако я не стал сдаваться. Я люблю ноутбуки за их компактность, а также за то, что они могут работать на батарее где угодно. Мне нужно было просто подумать, как освободить лишнюю ОЗУ, а также увеличить энергоэффективность.
Если вам нужны сразу конфиги, то пролистывайте вниз к разделу "Разбираем установочку"
Операционная система
Так как мне нужна ОС, которая будет жрать наименьшее количество ОЗУ и батареи, я выбрал Arch Linux. Классика, ничего нового. Его репозитории позволят мне автоматизировать кучу ненужной работы, а AUR позволит сократить ещё больше времени.
Менеджер окон
Я решил взять именно менеджер окон, а не полноценное окружение. Хоть мне и нравятся кеды (KDE), но они все равно кушают достаточно много, из-за того, что они подтягивают за собой достаточно много библиотек и зависимостей. Ну и сама по себе DE’шка жрёт достаточно много из-за всяких ненужных виджетов.
Разбираем установочку
Для начала нам нужно установить все основные пакеты (нужно же нам что-то конфигурировать)
xwinwrap
Нужен для установки файлов с расширением .gif в виде анимированных обоев
polybar
Нужен для того, чтобы в менеджере окон отображался топбар
i3
Сам оконный менеджер
i3-gaps
Расширение для оконного менеджера
base-devel
Компоненты необходимые для установки polybar
rofi
Программа для запуска приложений
okular
Программа для просмотра документов
zathura
Программа для просмотра документов (поддерживает не так много расширений, однако более минималистичная)
feh
Программа для просмотра картинок, а также для установки фоновых изображений
vim
Основной редактор
code
Дополнительный редактор
picom
Композитор (программа которая создает тени, прозрачность, блюрит фон)
kitty
Основной терминал
urxvt
Дополнительный терминал
ranger
Файловый менеджер
git
Система контроля версий
xdotool
Утилита, которая поможет при разработке скриптов и взаимодействии с окнами
xautolock
Утилита, которая блокирует компьютер при бездействии и запускает i3-lock
i3lock-color
Улучшенная версия i3lock. Программа нужна для блокировки компьютера и ввода пароля
scrot
Минималистиченое приложение для создания скриншотов
imagemagick
Программа, которая поможет при взаимодействии с картинками (блюрит их заранее, конвертирует, меняет разрешение)
Конфигурируем i3
i3 — Оконный менеджер, который не потребляет много ресурсов, тем самым, он будет полезен нам для того, чтобы "эмулировать" другие обычные оконные менеджеры. (В подарок конечно же идёт тилинг — способность оконного менеджера раскрывать приложения на всю свободную часть экрана)
Я буду приводить конфиг i3 по частям, для того, чтобы даже новички всё поняли. Начнём с самого главного — кнопка $Mod. Она служит для того, чтобы взаимодействовать с i3. Через неё будут проходить все основные хоткеи.
### Tweaks ###
# Set main key (Win)
set $mod Mod4
Далее научим наш оконный менеджер двигать окна мышью при нажатии $mod
# Press MOD key and click on mouse to move your window
floating_modifier $mod
# Focus doesn't follow the mouse
focus_follows_mouse no
Установим шрифты для наших приложений, а также для приложений, которые зависят от i3
# Fonts
font pango: JetBrains Mono 10
Моей задумкой было сделать все окна изначально летающими (что, как оказалось, очень удобно). Для пояснения: в i3 есть много видов стыковки окон (Tilling, Fullscreen, Tabbed, Float, Stacking), все они удобны в различных ситуациях, однако я не вижу смысла делать все окна заполняющими весь экран. Пусть лучше они заполняют его при нажатии $mod + f, а висят в воздухе по умолчанию, это я и сделал в следующем куске кода:
# Maximum width for floating windows
floating_minimum_size 400 x 350
floating_maximum_size 1800 x 900
# (1920 - 10)/2 and (1080 - 10)/2
for_window [class=".*"] floating enable
for_window [class=".*"] resize set 955 535
for_window [class=".*"] focus
Для того, чтобы вы не путались выражение (1920 - 10)/2 and (1080 - 10)/2 означает что каждое окно будет занимать четверть экрана, а также будет отступ (друг от друга) ровно в 5 пикселей (5 со всех сторон).
Далее давайте забиндим все основные приложения. Все хоткеи стараются соответствовать данной схеме