[Настройка Linux, *nix, Разработка под Linux] Конфигурация i3 под ноутбук: как свести производительность на 100%?
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно я понял, что мой ноутбук недостаточно производителен. Ему не хватает мощности вывезти всё вместе: 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 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 со всех сторон).
Далее давайте забиндим все основные приложения. Все хоткеи стараются соответствовать данной схеме
## 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-gaps — сборка 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, которая очень шустро работает на ноутбуках и даёт неплохие показатели
Так как конфигураций я написал ещё очень много (что отлично видно на скриншоте) их можно найти в репозитории Great i3.
Ещё пару скриншотов
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Open source, Разработка под Linux] Kali Linux получил графический интерфейс для подсистемы Windows для Linux (WSL2). Инструкция по установке
- [*nix] VPN в домашнюю локалку
- Доступна редакция дистрибутива MX Linux 19.2 с рабочим столом KDE
- [Системное администрирование, *nix] Лучшие практики bash-скриптов: краткое руководство по надежным и производительным скриптам bash (перевод)
- [Настройка Linux, *nix, Разработка под Linux] Using kconfig for own projects
- [Open source, *nix] FOSS News №29 – дайджест новостей свободного и открытого ПО за 10–16 августа 2020 года
- [Open source, Разработка под Linux] Paragon открыла свой драйвер NTFS для Linux, предложив включить его в ядро
- [*nix, Node.JS, Веб-аналитика, Хостинг] Мониторинг доступности сайта с информированием в Twitter на Node-RED
- Компания Paragon Software опубликовала GPL-реализацию NTFS для ядра Linux
- [*nix, Управление проектами, Венчурные инвестиции, Бизнес-модели, Финансы в IT] Apple 4:1 – не упустите шанс заработать
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_*nix, #_razrabotka_pod_linux (Разработка под Linux), #_linux, #_i3, #_configuration, #_rice, #_nastrojka_linux (
Настройка Linux
), #_*nix, #_razrabotka_pod_linux (
Разработка под Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 01:35
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно я понял, что мой ноутбук недостаточно производителен. Ему не хватает мощности вывезти всё вместе: 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 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 со всех сторон).
## 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-gaps — сборка 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, которая очень шустро работает на ноутбуках и даёт неплохие показатели Так как конфигураций я написал ещё очень много (что отлично видно на скриншоте) их можно найти в репозитории Great i3.
=========== Источник: habr.com =========== Похожие новости:
Настройка Linux ), #_*nix, #_razrabotka_pod_linux ( Разработка под Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 01:35
Часовой пояс: UTC + 5