Як звести продуктивність на 3%?

Нещодавно я зрозумів, що мій ноутбук недостатньо продуктивний. Йому не вистачає потужності вивезти все разом: Vim (+ 20 плагінів), VSCode (+ стільки ж розширень), Google Chrome (+ 20 вкладок) тощо. Здавалося б, звичайна проблема на ноутбуках із 4 ГБ ОЗУ, проте я не став здаватися. Я люблю ноутбуки за їх компактність, а також за те, що вони можуть працювати на батареї будь-де. Мені потрібно було просто подумати, як звільнити зайву ОЗП, а також збільшити енергоефективність.

Як звести продуктивність на 3%?

Якщо вам потрібні відразу конфіги, то перегортайте вниз до розділу "Розбираємо установку"

Операційна система

Так як мені потрібна ОС, яка буде їсти найменшу кількість ОЗУ та батареї, я вибрав Arch Linux. Класика, нічого нового. Його репозиторії дозволять мені автоматизувати купу непотрібної роботи, а AUR дозволить скоротити ще більше часу.

Менеджер вікон

Я вирішив взяти саме менеджер вікон, а не повноцінне оточення. Хоч мені й подобаються кеди (KDE), але вони все одно їдять досить багато, тому що вони підтягують за собою багато бібліотек і залежностей. Ну і сама по собі DE'шка жере досить багато через всякі непотрібні віджети.

Як звести продуктивність на 3%?

Розбираємо установку

Для початку нам потрібно встановити всі основні пакети (треба нам щось конфігурувати)

sudo pacman -Sy --noconfirm i3 i3-gaps base-devel rofi okular feh vim code picom kitty ranger git xdotool xautolock i3lock-color scrot imagemagick rxvt-unicode urxvt-perls

Ось зразкова схема, як все буде працювати

Як звести продуктивність на 3%?

Які пакети навіщо потрібні?

Пакет
Для чого потрібен

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 з усіх боків).

Далі давайте забиндімо всі основні програми. Усі хоткеї намагаються відповідати даній схемі

Як звести продуктивність на 3%?

## Keyboard Settings ##
# Apps
bindsym $mod+Return exec kitty
bindsym $mod+Mod1+r exec "kitty sh -c 'ranger'"
bindsym $mod+Mod1+g exec google-chrome-stable
bindsym $mod+Mod1+c exec code
bindsym $mod+Mod1+v exec dolphin
bindsym Print exec spectacle

Також, забиндімо всі основні функції, які ми виконуємо не думаючи, і які обов'язково мають бути

# System / Volume
bindsym XF86AudioMute "exec amixer -D pulse sset Master toggle && notify-send "Volume" "Sound is (un)muted" --urgency low"
bindsym XF86AudioRaiseVolume "exec amixer -D pulse sset Master 5%+ && notify-send "Volume" "Volume added +5%n    Volume level is now $(amixer -D pulse get Master | awk -F 'Left:|[][]' 'BEGIN {RS=""}{ print $3 }')" --urgency low"
bindsym XF86AudioLowerVolume "exec amixer -D pulse sset Master 5%- && notify-send "Volume" "Volume added -5%n    Volume level is now $(amixer -D pulse get Master | awk -F 'Left:|[][]' 'BEGIN {RS=""}{ print $3 }')" --urgency low"

# System / Brightness
bindsym XF86MonBrightnessDown exec xbacklight -dec 5
bindsym XF86MonBrightnessUp exec xbacklight -inc 5

# Moving from one window to another
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right

# Choose one of your workspaces
bindsym $mod+1 workspace $workspace1
bindsym $mod+2 workspace $workspace2
bindsym $mod+3 workspace $workspace3
bindsym $mod+4 workspace $workspace4

# Move window to the workspace
bindsym $mod+Shift+1 move container to workspace $workspace1
bindsym $mod+Shift+2 move container to workspace $workspace2
bindsym $mod+Shift+3 move container to workspace $workspace3
bindsym $mod+Shift+4 move container to workspace $workspace4

## Floating manipulation ##
# Make window floating
bindsym $mod+f floating toggle
# Change focus
bindsym $mod+Shift+f focus mode_toggle

# Move windows
bindsym $mod+Shift+h move left 20px
bindsym $mod+Shift+j move down 20px
bindsym $mod+Shift+k move up 20px
bindsym $mod+Shift+l move right 20px

# Resizing Windows
bindsym $mod+Ctrl+l resize shrink width 10 px or 10 ppt
bindsym $mod+Ctrl+k resize grow height 10 px or 10 ppt
bindsym $mod+Ctrl+j resize shrink height 10 px or 10 ppt
bindsym $mod+Ctrl+h resize grow width 10 px or 10 ppt

# Make window fullscreen
bindcode 95 fullscreen toggle

# Reload Configuration
bindsym $mod+p reload

# Kill a window
bindsym $mod+x exec xdotool getwindowfocus windowkill

Зробимо секцію автостарту

### Autostart ###
# Lockscreen after 10min delay
exec --no-startup-id "$HOME/.config/i3/lockscreen"
# Convert background gif to jpg
exec --no-startup-id convert -verbose $HOME/.config/i3/{gif.gif,gif.jpg}
# Generate Colorscheme
exec_always --no-startup-id wal -i $HOME/.config/i3/gif-0.jpg
# Compositor
exec_always --no-startup-id "killall -q picom; picom --config $HOME/.config/picom.conf"
# Language
exec --no-startup-id setxkbmap -model pc105 -layout us,ru -option grp:win_space_toggle
# Dunst
exec --no-startup-id dunst
# Kitty
exec kitty
# Dropbox
exec --no-startup-id dropbox &
# Polybar
exec_always --no-startup-id $HOME/.config/polybar/launch.sh
# Cursor
exec_always --no-startup-id xsetroot -cursor_name left_ptr

пропуски i3 - Складання i3, яка додає багато нових функцій. Однією з них є додавання відступів (gaps), що візуально виглядають дуже добре.

### i3-gaps ###
# Borders for windows
for_window [class=".*"] border pixel 5

# Gaps for i3bar
for_window [class="i3bar"] gaps outer current set 10

# Gaps
gaps inner 10
gaps outer 4

### Topbar and color theme ###
# Color theme of borders
client.focused              #bf616a #2f343f #d8dee8 #bf616a #d8dee8
client.focused_inactive     #2f343f #kf343f #d8dee8 #2f343f #2f343f
client.unfocused            #2f343f #2f343f #d8dee8 #2f343f #2f343f
client.urgent               #2f343f #2f343f #d8dee8 #2f343f #2f343f
client.placeholder          #2f343f #2f343f #d8dee8 #2f343f #2f343f
client.background           #2f343f

Що вийшло?

А вийшла досить мінімалістична збірка на i3, яка дуже швидко працює на ноутбуках і дає непогані показники.

Як звести продуктивність на 3%?

Так як конфігурацій я написав ще дуже багато (що добре видно на скріншоті) їх можна знайти в репозиторії Great i3.

Ще пару скріншотів

Як звести продуктивність на 3%?

Як звести продуктивність на 3%?

Як звести продуктивність на 3%?

Джерело: habr.com

Додати коментар або відгук