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

    Недавно я понял, что мой ноутбук недостаточно производителен. Ему не хватает мощности вывезти всё вместе: 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.

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




    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 45

      +4

      название словно специально созвучно с названием процессора интел

        0
        Название i3-wm кивок в сторону wmii, на котором он основан.
        +2
        Инстересная статья.
        На днях думал чего бы поставить на NetBook Asus pc ee 1001px 2gb оперативки, ставил разные дистрибутивы «из коробки» и в итоге мне нечего не понравилось, всё работает достаточно медлено. В итоге вернулся на Winsows XP — он ещё ворочиется, но браузеры уже ругаются на некоторых сайтах и хотят обновлений до Win7.

        В моём нетбуке всё упирается в процессор, браузер его грузит на 100%
        Вопрос, данная сборка будет работать быстрее чем XP?
        Стоит ли пробовать?
        А то я как начинаю возится с Линуксами, то забываю про сон на недели =)
          +1

          Спасибо. Можете попробовать мою связку. С Google Chrome жрет около 1.2ГБ. Какой у вас процессор? В зависимости от его мощности вам нужно подобрать ПО под Linux. Если прямо совсем всё плохо будет, то советую какой-нибудь легкий браузер (типо Surf)

            0
            Atom N450 1660...1667 МГц
            Браузер на XP использую OPERA — он у меня быстрее Хрома работает, иногда он что то не открывает, то открываю Хромом.

            В общем Ваша статья заинтересовала, попробую уставновить себе такую конфигурацию. Спасибо.
              0
              Из браузеров можно попробовать Vivaldi или Yandex (да, напичкан разным, но ресурсов ест меньше хрома).
              У меня на ноуте тоже i3, правда, с Manjaro. Ресурсы не экономил, просто пришёл к тому, что тайловый оконный менеджер — это удобно, меньше нужна мышь/тачпад, ну и как профит, загружается практически моментально, по сравнению с Cinnamon, которым пользовался до этого.
              Немного жалею о переходе на i3, теперь на работе напрягает виндой пользоваться, но вариантов нет
                0
                Vivaldi или Yandex
                Надеюсь, вы не серьёзно.
              +1
              Первое. Не ставить Chromium. Я не знаю, что там такого накрутили, но на Linux он работает просто чудовищно медленно. Нужно ставить либо проприетарный Chrome из гугловского репа, либо любой другой браузер на том же движке, например Opera.
              Второе. Не ставить AdBlock, который жрёт память как не в себя и ухитряется вызывать фризы даже на восьмиядерниках. Ставить вместо него что-то другое, более шустрое. Например uBlock. Дополнительно можно присмотреться к uMatrix, но это не для всех.
              Третье. Если браузер позволяет выключить кэширование (или уменьшить кэш) — отключите или поставьте минимально возможный размер. Удивительно, но это даёт заметную прибавку к плавности работы. Chrome последних версий уже не позволяет — теперь там эти параметры носят лишь рекомендательный характер, и он всё равно сделает по-своему.
              Четвёртое. Если у вас всё ещё HDD и есть возможность сменить его на SSD — меняйте. Если нет — оттюньте файловую систему. Как минимум, отключите журналирование и задайте в параметрах монтирования relatime или вообще noatime.
              Пятое. Можно поиграться с ZRAM и перенести в оперативку весь профиль браузера, что также очень заметно сказывается на быстродействии.
                0
                У меня затык в Процессор он всегда на 100%, оперативка наполовину свободна, тоже отдыхает. Я собственно по этому и не беру SSD.
                Остальное обязательно попробую.
                  +1
                  > по этому и не беру SSD.
                  Это вы зря.
                  Меньше времени на IO — больше отзывчивость системы, да и проц может в iowait жить (даже 1% iowait — это ощутимые визуально тормоза).
                    +1
                    Не зря. У меня Asus Eee PC 1215b 6Gb RAM - с SSD или без ни какой разницы, тормозит именно процессор.
                    Купил для него SSD — ничему не помогло, перекинул на другой комп. Современное ПО многопоточное, если один поток будет ждать IO то остальные десять уже тут как тут готовы забрать процессор.

                    Мой раньше работал на кухне для просмотра youtube, но уже давно с новыми браузерами не то что 720p, а и 480p тормозит. Пытался превратить в звонилку — зум, дискорд дают очень шипящий звук, меня люди едва разбирают (при покупке видео в скайпе работало нормально) (шипящий звук именно из-за CPU).

                    Сейчас работает для музыки и книг: foobar с десятком плагинов отлично воспроизводит 24-х битные flac и процессор в нуле.

                    MegasXIII Вам тоже этот ответ.
                    И не будет с Linux быстрее чем с Windows XP, если вы конечно не будете преднамеренно ставить старый софт, в первую очередь браузер. Тоже проверял. Но Linux значительно быстрее Windows 10 (тут в простое CPU загружен).

                    P.S. Думал отдать его в детский дом, но сомневаюсь — жалко детей.
                    P.P.S. Самый быстрый браузер для него — opera 12. Но только если требуется сидеть на ограниченном числе сайтов и они в нем работают.
                      +1
                      У меня 1201н, хдд там легко упирался в дискоинтенсивные операции. Для примера — обновление на новое ядро на хдд проходило примерно минуты три-пять, а после смены на ссд стало секунд тридцать. Да и отзывчивость повысилась очень заметно.
                  0
                  ZSWAP же.
                0
                Тоже о таком подумал, но еще хотелось бы отвязаться от мыши и стремного тачпада
                  0
                  На eeepc 1000h XP по тем временам летала, хм.
                  Посмотрите на debian 9 х32, что ли. Арч быстрее будет, но вы хоть с ума не сойдете)
                  Вместо гнома поставьте xfce.

                  Но браузеры будут есть весь процессор вне зависимости от.
                    0
                    Посмотрел, процессор с поддержкой х64 — попробуйте lubuntu 20 хотя бы в лайв, я поставил на асус 1201n и после mint заметно быстрее работает. Правда, у меня на асусе 4 ГБ и ссд, его ноутбучный медленный хдд едва ворочался под всеми актуальными ОС, разве что ХР не пробовал.
                      0
                      Буквально вчера снес ХР и поставил 32-х разрядную 7-ку на нетбук Acer Aspire One D250. Апгрейднут. Памяти 2Г и винт на 500Гиг.
                      Поставил последний Firefox 78. Работает намного(причем очень) быстрее чем ХР с Firefox 52.
                      Ставил Linux Mint XFCE 13. Производительность не сильно возросла по сравнению с ХР.
                      Имхо, 7-ка работает на нетбуке быстрее чем ХР.
                        0
                        Тоже думал поставить 7-ку, только вот потерял Теневой раздел с дистрибутивом.
                        Про 7-ку что starter идёт 32-разрядная, и у неё понижены системные требования, я только 2 недели назад узнал, случайно, когда возился с Нетбуком Самсунг.
                      0

                      Я сдался с постоянными переделками конфига и просто поставил regolith. Пока все нравится. Есть нарекания, но позволяет начать работать сразу с каким-ни-каким интерфейсом.

                        0
                        Мне… освободить лишнюю ОЗУ

                        Статья интересная, но остался один маленький вопрос — ОЗУ-то освободили?
                        А то 628M (или сколько там, не видно ничего) занятых RAM на первом скриншоте не впечатляет.
                        200MB ± еще куда ни шло.

                          0

                          Зайдите на Github и посмотрите сколько программ включено. Или хотя бы посмотрите на диаграмму вверху. 628МБ (или около того) для такого количества утилит — хорошее значение. А если использовать просто i3 (даже без i3-gaps), то возможно и 200 добьётесь

                            +1
                            Сколько программ включено? (не сарказм, не пытаюсь задеть, просто не понял). Программы именно запущены? Или скриншот с 628M сделан сразу после старта системы, когда ещё ничего не запущено? Или 628М — это после включения "Vim (+ 20 плагинов), VSCode (+ столько же расширений), Google Chrome (+ 20 вкладок)"?
                          0

                          Раз уж пошла такая пьянка… Вот мой скриншот i3, правда, я не был уж очень сжат в ресурсах, поэтому занялся укрошательствами в виде композитора. i3 gaps, polybar, rofi, композитор: форк compton, терминал: alacritty.


                          Классическая картинка с neofetch


                          dotfiles
                          Правда, сейчас я любопытства ради перешел на Awesome.

                            0
                            Правда, сейчас я любопытства ради перешел на Awesome

                            Я как-то попробовал awesome wm из любопытства и уже много лет на нем сижу.

                            По теме поста: еще можно порекомендовать достаточно легковесный дистрибутив Void Linux (есть сборка под i686)

                            Заголовок спойлера
                            image

                              –1

                              Awesome — круто, однако он по-моему слишком сложен в настройке. Учить Lua только для того, чтобы написать конфиг, это как по мне такая себе мотивация. Однако, если напишите мне в личку источники, то мб сделаю ещё один репозиторий с GreatAwesome.

                                +1
                                Можно и не учить Lua, а взять готовые темы оформления worron awesome-config или awesome-copycats и/или допилить их
                                  0

                                  Данную тему я придумал сам. Я вообще не любитель "переделывать", мне легче написать всё самому. Тогда и код будет как не говнокод, и обновлять будет легче

                            +1

                            Сам пришел к примерно такой же схеме, но вместо i3 юзаю awesome. А i3 поддерживает wayland?

                              0

                              Есть sway — совместимый аналог i3 под wayland.

                              0
                              Многое зависит от решаемых на компьютере задач. Часто проблема в том, что один интересный софт в KDE, другой использует Gtk. Аналоги конечно есть, но не всегда реализуют одинаковый функционал. Да и «привычка — вторая натура». Так у меня Mate+Xmonad, но без Kile и Okular не жизнь.
                                0
                                Помнится, отказался от Okular, когда потребовалось читать документы, оформленные многостраничными tiff'ами. И вдруг выяснилось, что Okular их неправильно обрабатывает — отображает лишь первую страницу. Evince в этом плане оказался намного более всеядным и непривередливым — он правильно показывает всё, включая tiff и djvu.
                                –1
                                Можно вообще отказаться от оболочки запускать нужную программу вместо оболочки. Памяти освободиться прилично.
                                  0

                                  Не самое удобное предложение. Всё-таки i3 удобнее будет.

                                    –1
                                    Оболочка все ровно тащит много памяти, а тут открыл в каждом терминале по проге которые нужны и переключайся между терминалами. Как такой вариант?
                                      0

                                      У вас не будет многих возможностей. То же копирование или drag-n-drop не будет работать без X

                                  0
                                  приятная связка :) привет любителям тайлинга
                                    0

                                    Только kitty очень жрет ресурсы сам по себе, я из-за этого переехал на st (stterm из suckless-tools).


                                    Заголовок спойлера
                                      0
                                      Для скриншотов использую такой скрипт:
                                      import /tmp/Screenshot_tmp.png && xclip -selection clipboard -t image/png -i /tmp/Screenshot_tmp.png
                                      Во-первых дает возможность выделить нужную область.
                                      Во-вторых копирует изображение в буфер обмена.
                                      Мне это покрывает 99% использования. Иначе после выделения области открываю уже файл /tmp/Screenshot_tmp.png
                                      P.S. Анимированные обои в тайловом wm? Ну окей… Просто одно из преимуществ тайловых wm то что пространство монитора задействовано на 100% и рабочего стола просто не видно если запущена хотя бы 1 программа.
                                        0
                                        Scrot в общем-то тоже позволяет и в буфер копировать и в файл писать и выделять и что угодно. У меня три комбинации клавишь настроены: для полноэкранного снимка, для активного окна и для выделенной области.
                                        P.S.: обои в тайловом wm тоже не понимаю. Как и многие другие украшательства, впрочем.
                                        0
                                        sudo pacman -Sy --noconfirm i3 i3-gaps

                                        Зачем вам сразу два очень похожих WM? Верней, один WM и его чуть более фичастый форк. А потом они плачут, что у них памяти мало, да место на диске постоянно кончается.

                                          0
                                          Нужен для установки файлов с расширением .gif в виде анимированных обоев

                                          Зачем нужны обои в тайловм WM, который всё равно растягивает окна на весь экран и не даёт любоваться обоями?

                                            0

                                            В i3 есть floating режим у окон :) Но да, почти всегда его не видно. image

                                            0

                                            Для тех кто хочет безопасно и больно (aka Wayland), можно поменять i3 на sway с сохранением конфига, а софтины выбрать из списка migration guide. Большая часть приложений у меня работает уже года 2 без каких-то проблем с поддержкой Wayland, так что XWayland (эмуляция x11) использовать приходится в редких случаях, из основного — chrome/electron (на HiDPI-дисплеях это оканчивается размытыми пикселями, т.к. XWayland почему-то не подхватывает нативное расширение экрана: С). Ну и да, шаринг экрана в зуме/мит-гугл/веребу/етц не работает (только софт под XWayland шарится).

                                              0

                                              А сколько оперативки после старта занимает? Скорость загрузки?
                                              У меня арч KDE. Система грузится меньше четырёх секунд, оперы чуть больше 500Мб


                                                0
                                                В подарок конечно же идёт тилинг...
                                                … а также тиринг на Nvidia, который не решаем в i3, на сколько мне удалось загуглить. Единственное, что остановило меня при переходе на i3. При работе с текстом это не критично, но мне также часто необходимо работать с графикой.

                                                Only users with full accounts can post comments. Log in, please.