Русский
Русский
English
Статистика
Реклама

I3

Конфигурация i3 под ноутбук как свести производительность на 100?

19.08.2020 12:13:25 | Автор: admin

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





Если вам нужны сразу конфиги, то пролистывайте вниз к разделу "Разбираем установочку"

Операционная система


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


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


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





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


Для начала нам нужно установить все основные пакеты (нужно же нам что-то конфигурировать)


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

Вот примерная схема, как всё будет работать



Какие пакеты для чего нужны?


Пакет Для чего нужен
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 windowfloating_modifier $mod# Focus doesn't follow the mousefocus_follows_mouse no

Установим шрифты для наших приложений, а также для приложений, которые зависят от i3


# Fontsfont pango: JetBrains Mono 10

Моей задумкой было сделать все окна изначально летающими (что, как оказалось, очень удобно). Для пояснения: в i3 есть много видов стыковки окон (Tilling, Fullscreen, Tabbed, Float, Stacking), все они удобны в различных ситуациях, однако я не вижу смысла делать все окна заполняющими весь экран. Пусть лучше они заполняют его при нажатии $mod + f, а висят в воздухе по умолчанию, это я и сделал в следующем куске кода:


# Maximum width for floating windowsfloating_minimum_size 400 x 350floating_maximum_size 1800 x 900# (1920 - 10)/2 and (1080 - 10)/2for_window [class=".*"] floating enablefor_window [class=".*"] resize set 955 535for_window [class=".*"] focus

Для того, чтобы вы не путались выражение (1920 - 10)/2 and (1080 - 10)/2 означает что каждое окно будет занимать четверть экрана, а также будет отступ (друг от друга) ровно в 5 пикселей (5 со всех сторон).

Далее давайте забиндим все основные приложения. Все хоткеи стараются соответствовать данной схеме



## Keyboard Settings ### Appsbindsym $mod+Return exec kittybindsym $mod+Mod1+r exec "kitty sh -c 'ranger'"bindsym $mod+Mod1+g exec google-chrome-stablebindsym $mod+Mod1+c exec codebindsym $mod+Mod1+v exec dolphinbindsym Print exec spectacle

Также, забиндим все основные функции, которые мы выполняем не думая, и которые обязательно должны быть


# System / Volumebindsym 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 / Brightnessbindsym XF86MonBrightnessDown exec xbacklight -dec 5bindsym XF86MonBrightnessUp exec xbacklight -inc 5# Moving from one window to anotherbindsym $mod+h focus leftbindsym $mod+j focus downbindsym $mod+k focus upbindsym $mod+l focus right# Choose one of your workspacesbindsym $mod+1 workspace $workspace1bindsym $mod+2 workspace $workspace2bindsym $mod+3 workspace $workspace3bindsym $mod+4 workspace $workspace4# Move window to the workspacebindsym $mod+Shift+1 move container to workspace $workspace1bindsym $mod+Shift+2 move container to workspace $workspace2bindsym $mod+Shift+3 move container to workspace $workspace3bindsym $mod+Shift+4 move container to workspace $workspace4## Floating manipulation ### Make window floatingbindsym $mod+f floating toggle# Change focusbindsym $mod+Shift+f focus mode_toggle# Move windowsbindsym $mod+Shift+h move left 20pxbindsym $mod+Shift+j move down 20pxbindsym $mod+Shift+k move up 20pxbindsym $mod+Shift+l move right 20px# Resizing Windowsbindsym $mod+Ctrl+l resize shrink width 10 px or 10 pptbindsym $mod+Ctrl+k resize grow height 10 px or 10 pptbindsym $mod+Ctrl+j resize shrink height 10 px or 10 pptbindsym $mod+Ctrl+h resize grow width 10 px or 10 ppt# Make window fullscreenbindcode 95 fullscreen toggle# Reload Configurationbindsym $mod+p reload# Kill a windowbindsym $mod+x exec xdotool getwindowfocus windowkill

Сделаем секцию автостарта


### Autostart #### Lockscreen after 10min delayexec --no-startup-id "$HOME/.config/i3/lockscreen"# Convert background gif to jpgexec --no-startup-id convert -verbose $HOME/.config/i3/{gif.gif,gif.jpg}# Generate Colorschemeexec_always --no-startup-id wal -i $HOME/.config/i3/gif-0.jpg# Compositorexec_always --no-startup-id "killall -q picom; picom --config $HOME/.config/picom.conf"# Languageexec --no-startup-id setxkbmap -model pc105 -layout us,ru -option grp:win_space_toggle# Dunstexec --no-startup-id dunst# Kittyexec kitty# Dropboxexec --no-startup-id dropbox &# Polybarexec_always --no-startup-id $HOME/.config/polybar/launch.sh# Cursorexec_always --no-startup-id xsetroot -cursor_name left_ptr

i3-gaps сборка i3, которая добавляет много новых функций. Одной из них является добавление отступов (gaps), которые визуально выглядят очень хорошо.


### i3-gaps #### Borders for windowsfor_window [class=".*"] border pixel 5# Gaps for i3barfor_window [class="i3bar"] gaps outer current set 10# Gapsgaps inner 10gaps outer 4### Topbar and color theme #### Color theme of bordersclient.focused              #bf616a #2f343f #d8dee8 #bf616a #d8dee8client.focused_inactive     #2f343f #kf343f #d8dee8 #2f343f #2f343fclient.unfocused            #2f343f #2f343f #d8dee8 #2f343f #2f343fclient.urgent               #2f343f #2f343f #d8dee8 #2f343f #2f343fclient.placeholder          #2f343f #2f343f #d8dee8 #2f343f #2f343fclient.background           #2f343f

Что получилось?


А получилась довольно минималистичная сборка на i3, которая очень шустро работает на ноутбуках и даёт неплохие показатели



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

Ещё пару скриншотов




Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru