Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Нядаўна я зразумеў, што мой наўтбук недастаткова прадукцыйны. Яму не хапае магутнасці вывезці ўсё разам: Vim (+ 20 плагінаў), VSCode (+ столькі ж пашырэнняў), Google Chrome (+ 20 укладак) і гэтак далей. Здавалася б, звычайная праблема на наўтбуках з 4 ГБ АЗП, аднак я не стаў здавацца. Я люблю наўтбукі за іх кампактнасць, а таксама за тое, што яны могуць працаваць на батарэі дзе заўгодна. Мне трэба было проста падумаць, як вызваліць лішнюю АЗП, а таксама павялічыць энергаэфектыўнасць.

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Калі вам патрэбныя адразу канфігі, то прагортвайце ўніз да часткі "Разбіраны ўсталёўачку"

Аперацыйная сістэма

Так як мне патрэбна АС, якая будзе жэрці найменшую колькасць АЗП і батарэі, я абраў Arch Linux. Класіка, нічога новага. Яго рэпазітары дазволяць мне аўтаматызаваць кучу непатрэбнай працы, а AUR дазволіць скараціць яшчэ больш часу.

Мэнэджар вокнаў

Я вырашыў узяць менавіта мэнэджар вокнаў, а не паўнавартаснае асяроддзе. Хоць мне і падабаюцца кеды (KDE), але яны ўсё роўна ядуць дастаткова шмат, з-за таго, што яны падцягваюць за сабой дастаткова шмат бібліятэк і залежнасцяў. Ну і сама па сабе DE'шка жрэ досыць шмат з-за ўсякіх непатрэбных віджэтаў.

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Разбіраны ўстаноўачку

Для пачатку нам трэба ўсталяваць усе асноўныя пакеты (трэба ж нам нешта канфігураваць)

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

Вось прыкладная схема, як усё будзе працаваць

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Якія пакеты для чаго патрэбны?

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

xwinwrap
Патрэбны для ўсталёўкі файлаў з пашырэннем .gif у выглядзе анімаваных шпалер.

polybar
Патрэбны для таго, каб у мэнэджэры вокнаў адлюстроўваўся топбар.

i3
Сам аконны менеджэр

i3-прабелы
Пашырэнне для аконнага мэнэджара

база-распрацоўка
Кампаненты неабходныя для ўстаноўкі polybar

rofi
Праграма для запуску прыкладанняў

акуляр
Праграма для прагляду дакументаў

Затура
Праграма для прагляду дакументаў (падтрымлівае не так шмат пашырэнняў, аднак больш мінімалістычная)

фе
Праграма для прагляду карцінак, а таксама для ўстаноўкі фонавых малюнкаў

напор
Асноўны рэдактар

код
Дадатковы рэдактар

picom
Кампазітар (праграма якая стварае цені, празрыстасць, блюрыць фон)

кацяня
Асноўны тэрмінал

urxvt
Дадатковы тэрмінал

рэйнджар
файлавы менеджэр

мярзотнік
Сістэма кантролю версій

xdotool
Утыліта, якая дапаможа пры распрацоўцы скрыптоў і ўзаемадзеянні з вокнамі

xautolock
Утыліта, якая блакуе кампутар пры бяздзейнасці і запускае i3-lock

i3lock-color
Палепшаная версія i3lock. Праграма патрэбна для блакавання кампутара і ўводу пароля

Scrot
Мінімалістычнае прыкладанне для стварэння скрыншотаў

Вобраз
Праграма, якая дапаможа пры ўзаемадзеянні з малюначкамі (захапляе іх загадзя, канвертуе, мяняе дазвол)

Канфігуруем 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 з усіх бакоў).

Далей давайце забіндзім усе асноўныя прыкладанні. Усе хоткеи імкнуцца адпавядаць дадзенай схеме

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

## 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, якая вельмі хутка працуе на наўтбуках і дае нядрэнныя паказчыкі

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Бо канфігурацый я напісаў яшчэ вельмі шмат (што выдатна відаць на скрыншоце) іх можна знайсці ў рэпазітары Great i3.

Яшчэ пару скрыншотаў

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Канфігурацыя i3 пад наўтбук: як звесці прадукцыйнасць на 100%?

Крыніца: habr.com

Дадаць каментар