Нещодавно я зрозумів, що мій ноутбук недостатньо продуктивний. Йому не вистачає потужності вивезти все разом: Vim (+ 20 плагінів), VSCode (+ стільки ж розширень), Google Chrome (+ 20 вкладок) тощо. Здавалося б, звичайна проблема на ноутбуках із 4 ГБ ОЗУ, проте я не став здаватися. Я люблю ноутбуки за їх компактність, а також за те, що вони можуть працювати на батареї будь-де. Мені потрібно було просто подумати, як звільнити зайву ОЗП, а також збільшити енергоефективність.
Якщо вам потрібні відразу конфіги, то перегортайте вниз до розділу "Розбираємо установку"
Операційна система
Так як мені потрібна ОС, яка буде їсти найменшу кількість ОЗУ та батареї, я вибрав Arch Linux. Класика, нічого нового. Його репозиторії дозволять мені автоматизувати купу непотрібної роботи, а AUR дозволить скоротити ще більше часу.
Менеджер вікон
Я вирішив взяти саме менеджер вікон, а не повноцінне оточення. Хоч мені й подобаються кеди (KDE), але вони все одно їдять досить багато, тому що вони підтягують за собою багато бібліотек і залежностей. Ну і сама по собі DE'шка жере досить багато через всякі непотрібні віджети.
Розбираємо установку
Для початку нам потрібно встановити всі основні пакети (треба нам щось конфігурувати)
xwinwrap
Потрібен для встановлення файлів з розширенням .gif у вигляді анімованих шпалер
polybar
Потрібен для того, щоб у менеджері вікон відображався топбар
i3
Сам віконний менеджер
пропуски i3
Розширення для віконного менеджера
база-розробник
Компоненти, необхідні для встановлення polybar
rofi
Програма для запуску програм
okular
Програма для перегляду документів
zathura
Програма для перегляду документів (підтримує не так багато розширень, проте мінімалістичніша)
Фе
Програма для перегляду картинок, а також встановлення фонових зображень
натиск
Основний редактор
код
Додатковий редактор
picom
Композитор (програма, яка створює тіні, прозорість, блюрит фон)
кошеня
Основний термінал
urxvt
Додатковий термінал
рейнджер
Файловий менеджер
мерзотник
Система контролю версій
xdotool
Утиліта, яка допоможе при розробці скриптів та взаємодії з вікнами
xautolock
Утиліта, яка блокує комп'ютер при бездіяльності та запускає i3-lock
i3lock-color
Поліпшена версія i3lock. Програма потрібна для блокування комп'ютера та введення пароля
мазок
Мінімалістичний додаток для створення скріншотів
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 з усіх боків).
Далі давайте забиндімо всі основні програми. Усі хоткеї намагаються відповідати даній схемі