Linux-десктоп своими руками: Make Computers Fast Again

Уже говорил как-то, что в свое время перешел с Windows на FreeBSD в том числе из-за того, что FreeBSD работала быстрее на том же железе, и не требовалось плясок с бубнами, потому что в общем-то всё что нужно — настраивалось от и до.

Потом Linux — потому что лучше поддержка железа, ну и, в общем, никакого желания возвращаться на Windows уже не возникало.

Но время идёт, и вот последние версии Ubuntu до боли напоминают Windows своей неспешностью и сложнопредсказуемостью. А тут еще желание сделать удобный для работы десктоп из TV-бокса…

В принципе, нашлась уже готовая Armbian-сборка под мой TV-бокс, с уже настроенным десктопом XFCE -, но несмотря на то, что XFCE считается «легковесной» — она оказалась недостаточно легковесная, не настолько насколько мне бы хотелось.
Заметно подтормаживали окошки, всё в целом как-то не так…

А ведь несмотря на свою «маленьковость» — компьютер-то должен быть неплохим: 4Гб RAM, 4 ядра по 1.5ГГц, когда-то подобные были вообще за пределами доступности, и ведь тогда «всё работало», и работало быстро, на гораздо более медленном железе.
Что же не так, неужели ARM в принципе тормозные процессоры?

В общем, решил собрать «десктоп» с нуля. Ну, почти.
(всё дальше — за исключением сугубо «железячной» части вполне применимо для любых компьютеров и ноутбуков)

Требования простые:
— большой экран
— минимум занимаемого места
— беспроводное примерно всё, кроме сети
— многооконная среда
— эмулятор терминала (shell, vim, MidnightCommander)
— немного графики (Gimp)
— ардуино-софт
— Офис
— печать на принтер
— браузер
— софт для рисования печатных плат (Fritzing)
— видеоплеер, музыка, наушники — вот это всё

Буду сразу говорить про итоговые варианты — потому что промежуточные не подходили по разным причинам и были отбракованы.

Аппаратная часть:

За основу взят TV-бокс Z8, на базе процесора H618. Для сравнения — аналогичная процедура делалась на других устройства, на H616 и rk3528: забегая вперед, наилучшие результаты по графике показал именно H618, чуть хуже H616, а вот rk3528 отрисовывал графику хуже всего. Это при том, что с точки зрения «машинки для расчётов» именно rk3528 работает быстрее всех. То есть, он хорош для сервера, но не для десктопа.

Экран — 22» телевизор с разрешением экрана 1920×1080. Почему именно телевизор — потому что он умеет воспроизводить звук по HDMI. За последние годы сильно отвык от того, что пиксели можно увидеть глазом, и как только раньше работали за такими мониторами?

Проблему места на столе удалось решить с помощью поворотного кронштейна для монитора — из тех, что крепятся на край стола, и позволяют крутить экран как угодно, при этом сам стол свободен, на нём ничего не громоздится.
Надо же, раньше такого не было.

Беспроводная полноразмерная клавиатура с тачпадом легко убирается в сторону, не загораживая пространство.
На удивление, батареек хватает надолго.

USB-порт на боксе заработал только один — можно было конечно поковыряться в DTB и попробовать включить второй -, но было лень, оказалось проще взять плоский USB-хаб, и прилепить его, и «системный блок», к самому монитору.
Получился аккуратный «моноблок».
Встроенного WiFi и Bluetooth в этой модели нет, но сейчас есть масса разнообразных USB-донглов, которые легко решают эту проблему.

Система:

За основу взята сборка Armbian-unofficial_24.5.0-trunk_Transpeed-8k618-t_bookworm_edge_6.7.12.img.xz. По умолчанию сразу после установки она занимает всего около 2Гб места (как корректно назвать то, что не RAM, не ROM, но и не диск?).

Строка ввода логина-пароля, текстовый режим, хорошо для сервера, но мне нужен десктоп для работы за ним. При этом задача в том, чтобы максимально избегать любых «десктопных сред», прежде всего из-за интегрированности: когда работа одной программы зависит от работы другой, и замена одной из них может приводить к сложнопредсказуемым последствиям.
Ну и конечно по причине того, что современные DE тащат за собой кучу разнообразного хлама, из которого нужны бывают одна-две программы. А место на «диске» emmc — не резиновое.

Однако, отказ от «единой интегрированной системы» может приводить к интересным глюкам, поэтому сразу отключаем всё лишнее. Например, пришлось полностью отключить systemd.
В Debian это делается примерно так: Очищаем кеш пакетов:

apt clean

Скачиваем нужные для перевода системы в SystemV mode

apt --download-only install sysvinit-core isc-dhcp-client

Переходим в single-user mode:

systemctl rescue

Устанавливаем скачанное:

apt install /var/cache/apt/archives/*.deb

И перезагружаемся. В результате получаем старый добрый SystemV режим с runlevels, и скриптами запуска-останова сервисов.

Почему старый добрый?
Дело в том, что запуск разных демонов и скриптов становится более предсказуемым и прозрачным: есть определенный список скриптов, которые запускаются в определенной последовательности — причем именно вы определяете, что и когда запускать, или не запускать, и находятся они в одном месте — /etc/init.d, откуда уже идут симлинки для запуска-останова для различных runlevels: /etc/rcX.d

То, чего там нет — не будет запускаться, а если не запустилось то, что там есть — всегда можно посмотреть почему.
Заодно и логи нормальные, вместо единой логопомойки с фильтрами — всё по своим местам.
(хотя есть любители и обратного…)

Однако теперь, например, для запуска работы сети нужно чуть-чуть приложить руки и написать

/etc/network/interfaces:

...
auto end0
iface end0 inet dhcp
...

или добавить в /etc/rc.local команду типа

dhclient end0

В общем, самому принять какое-то решение и указать компьютеру, что именно он должен сделать.
Это может показаться более сложным -, но зато он не будет заниматься самодеятельностью когда не надо.

Установка Иксов (X-window)

От графической системы мне требуется только показывать окошки и запускать программы, поэтому достаточно будет простейшего оконного менеджера. Если на пальцах: X-сервер рисует что-то на экране, программы рисуют в своих окошках, а окнами управляет оконный менеджер: создает, двигает и закрывает. Больше ничего особенного он не делает, а потому и практически не тормозит.

В качестве такого оконного менеджера неплохо себя показал WindowMaker — минималистичный оконный менеджер, с встроенным меню, настраиваемыми хоткеями и возможностью запуска любой программы по имени.
Разумеется, есть и еще более минималистичные, вообще в этом плане у Иксов очень неплохое поле для экспериментов.

Но для нормальной работы нужен еще эмулятор терминала:
фактически стандарт — xterm, но забегая вперед — лучшим оказался терминал sakura, который его прекрасно замещает.
По умолчанию ни того, ни другого нет, поэтому устанавливаю sakura.

Для запуска Иксов из командной строки нужен пакет xinit, включающий в себя скрипты запуска.
И конечно, нужен сам X-сервер со всеми своими стандартными модулями. Поэтому устанавливается это всё вместе так:

apt install xserver-xorg xinit wmaker sakura

Проверяем работу X-сервера, запуская из-под рута:

X:0

должен показать черный экран, это значит всё успешно заработало. Заходим в другую консоль (Ctrl-Alt-Fx или по ssh) и прибиваем процесс Xorg.
Либо не заработает, и напишет, что ошибки можно посмотреть в логе типа /tmp/.X0/log — тогда надо смотреть что ему не понравилось…

Теперь заходим обычным юзером, создаем в своем каталоге файл .xinitrc с единственной строкой:

wmaker

И пробуем запустить:

startx

Должен запуститься WindowMaker.
Вызов меню — F12, в меню есть пункт Run — нажимаем, пишем sakura, и открывается терминал.
В меню «по умолчанию» скорее всего терминалом будет указан xterm, но мы его не ставили, поэтому пока вот так, теперь надо всё настраивать.

92f8e29d6ae7ef206ce4a77231fc3d75.png

Вид «по умолчанию», конечно, так себе -, но это настраивается, чуть позже.

В левом верхнем (обычно) углу экрана — иконка программы настройки. Программа реально древняя, поэтому к интерфейсу есть много вопросов -, но пользоваться им придется примерно один раз. Несмотря на древность — всё работает. По сути нужно только меню для запуска основных программ и настройки хоткеев.

Поддерживается много «экранов», подобие тайлинга (размещение двух окон рядом вертикально или горизонтально), максимизация-минимизация и так далее.
Остается настроить фон, цвет и вид меню, шрифты поприятнее — и в общем-то всё. Свои задачи управления окнами он выполняет, и выполняет хорошо, а большего от него и не требуется. Всё нужное — настраивается отдельно.

Настройки WindowMaker — в каталоге ~/GNUstep/Defaults, файл WindowMaker и WMRootMenu.
Простые текстовые файлы, которые можно править вручную, например для массовой замены шрифтов или корректировки списка программ.
Некоторые вещи так делать просто проще, чем тыкать в иконки «программы настройки».

Пример конфига WindowMaker
{
  FTitleColor = "#ffffff";
  FrameBorderColor = "#b6b6b3";
  LTCMaximizeKey = None;
  CycleIgnoreMinimized = NO;
  MenuDisabledColor = gray60;
  LastWorkspaceKey = None;
  MoveToWorkspace9Key = None;
  IconTitleBack = "#4c6b88";
  FTitleBack = (hgradient, "rgb:79/a2/cf", "rgb:20/34/41");
  MoveToPrevWorkspaceLayerKey = None;
  ClipTitleFont = "LXGW WenKai TC Light:slant=0:weight=50:width=100:pixelsize=12";
  MiniwindowPreviewBalloons = YES;
  MaximizeKey = F11;
  HideKey = "Mod4+H";
  MouseForwardButtonAction = None;
  MoveToWorkspace7Key = None;
  IconTitleFont = "LXGW WenKai TC Light:slant=0:weight=50:width=100:pixelsize=11";
  LargeDisplayFont = "LXGW WenKai TC Light,serif:pixelsize=20";
  RBCMaximizeKey = None;
  IconificationStyle = none;
  WindowShortcut10Key = None;
  MoveToWorkspace2Key = None;
  MouseWheelTiltAction = None;
  MenuTitleColor = "#ffffff";
  WindowShortcut3Key = None;
  ClipAutolowerDelay = "";
  MenuTitleFont = "LXGW WenKai TC Light:slant=0:weight=50:width=100:pixelsize=18";
  EnableWorkspacePager = YES;
  SmoothWorkspaceBack = YES;
  WindowRelaunchKey = None;
  MoveTo6to12Head = None;
  WindowShortcut4Key = None;
  NoWindowOverDock = YES;
  OmnipresentKey = None;
  WorkspaceBack = (tpixmap, ".local/share/pictures/BlueImage.jpeg", black);
  SnapEdgeDetect = 1;
  LBCMaximizeKey = None;
  HighlightTextColor = "#000000";
  ClipAutoexpandDelay = "";
  WindowShortcut9Key = None;
  EnforceIconMargin = NO;
  HelpBalloons = NO;
  WindowSnapping = NO;
  KeepAtBottomKey = None;
  MoveResizeKey = None;
  KeepOnTopKey = None;
  ClipTitleColor = "rgb:79/96/cf";
  AppIconBalloons = NO;
  MoveHalfMaximizedWindowsBetweenScreens = NO;
  MoveTo12to6Head = None;
  WorkspaceBorder = None;
  FrameFocusedBorderColor = "#b6b6b3";
  WindowTitleFont = "LXGW WenKai TC Light:slant=0:weight=80:width=100:pixelsize=18";
  MoveToWorkspace8Key = None;
  WrapAppiconsInDock = YES;
  RunKey = "Mod4+F2";
  LHMaximizeKey = "Mod4+Left";
  MoveToPrevWorkspaceKey = "Control+Shift+Mod1+Left";
  MoveToWorkspace6Key = None;
  ResizebarBack = (hgradient, "rgb:49/5d/7e", "rgb:10/20/20");
  MiniPreviewSize = 56;
  MoveToWorkspace10Key = None;
  DisplayFont = "LXGW WenKai TC Light:slant=0:weight=80:width=100:pixelsize=18";
  KbdModeLock = YES;
  MouseBackwardButtonAction = None;
  BHMaximizeKey = "Mod4+Down";
  WorkspaceBorderSize = 0;
  OpenTransientOnOwnerWorkspace = YES;
  CycleActiveHeadOnly = NO;
  MenuTitleExtendSpace = 0;
  MoveToWorkspace1Key = None;
  DockRaiseLowerKey = None;
  IgnoreGtkHints = NO;
  ShowClipTitle = YES;
  WindowShortcut1Key = None;
  RHMaximizeKey = "Mod4+Right";
  FrameSelectedBorderColor = "#ffffff";
  ClipAutocollapseDelay = "";
  THMaximizeKey = "Mod4+Up";
  AlternativeHalfMaximized = NO;
  MiniaturizeKey = "Mod4+M";
  WindowShortcut2Key = None;
  MoveToNextWorkspaceLayerKey = None;
  WorkspaceMapKey = "Control+Mod1+Up";
  ToggleKbdModeKey = None;
  DragMaximizedWindow = Move;
  DoNotMakeAppIconsBounce = NO;
  MiniwindowTitleBalloons = NO;
  MaximusKey = "Mod1+F11";
  WindowShortcut7Key = None;
  OpaqueResize = NO;
  MenuTextBack = (hgradient, "rgb:49/5d/7e", "rgb:10/20/20");
  RaiseAppIconsWhenBouncing = NO;
  ResizeIncrement = 0;
  DisableAnimations = YES;
  WindowShortcut8Key = None;
  OpaqueMoveResizeKeyboard = NO;
  MoveToLastWorkspaceKey = None;
  GroupNextKey = None;
  Attraction = NO;
  SingleClickLaunch = NO;
  MenuTextColor = white;
  IconBack = (mdgradient, "rgb:28/44/54", "rgb:38/55/79", "rgb:10/20/20");
  AntialiasedText = YES;
  DisableBlinking = NO;
  MoveToWorkspace5Key = None;
  WindowTitleExtendSpace = 0;
  NormalCursor = (builtin, left_ptr);
  WorkspaceNameDisplayPosition = center;
  WindowListKey = "Mod4+F12";
  MenuTextFont = "LXGW WenKai TC Light:slant=0:weight=50:width=100:pixelsize=18";
  ScreenSwitchKey = None;
  MenuTitleBack = (hgradient, "rgb:79/a2/cf", "rgb:20/34/41");
  DisableMiniwindows = YES;
  SnapCornerDetect = 10;
  MoveToNextWorkspaceKey = "Control+Shift+Mod1+Right";
  HMaximizeKey = None;
  SnapToTopMaximizesFullscreen = NO;
  HighlightColor = "#ffe0ac";
  GroupPrevKey = None;
  PointerWithHalfMaxWindows = NO;
  MinimizeAllKey = None;
  MoveToWorkspace3Key = None;
  DisableDrawers = NO;
  CClipTitleColor = "rgb:61/61/61";
  WindowShortcut5Key = None;
  HideOthersKey = None;
  ClipAutoraiseDelay = "";
  PTitleBack = (hgradient, "rgb:70/82/af", "rgb:10/20/20");
  MenuTextExtendSpace = 0;
  WindowShortcut6Key = None;
  SaveSessionOnExit = YES;
  BounceAppIconsWhenUrgent = NO;
  ViKeyMenus = NO;
  UTitleColor = gray;
  UTitleBack = (hgradient, "rgb:49/5d/7e", "rgb:10/20/20");
  HighlightActiveApp = YES;
  CirculateRaise = YES;
  PTitleColor = "#ffffff";
  MoveToWorkspace4Key = None;
  RTCMaximizeKey = None;
}

Конечно писать это с нуля глупо, но вот если надо подправить только шрифты или цвета — то почему бы и не поправить в тексте?

Заливку фонов можно задавать сплошным цветом, двух- и трех-точечными градиентами, сами цвета — как конструкцией «rgb:70/82/af» так и »#7082af»

Модификаторы кнопок: Control, Shift, Mod1 (Alt), Mod4 (Win, Super).

0a1940eecc97ecb76b2f7e18da7fa248.png

Шрифты

Иксы поддерживают шрифты ttf. Достаточно скачать их, например, с Google Fonts, и распаковать в каталог .local/share/fonts, затем обновить кеш:

fc-cache -r

Посмотреть список имеющегося:

fc-list

Есть еще настройки сглаживания — по умолчанию сейчас сглаживание включено, но если нет — можно включить вручную:

Создать файл .config/fontconfig/fonts.conf:




    
        
            true
        
        
            true
        
        
            hintslight
        
        
            rgb
        
        
            false
        
        
            lcddefault
        
        
            96
        
    

В нем включаем в явном виде антиалиасинг, отключаем автохинтинг (он может работать плохо на некоторых шрифтах), и включаем хинтинг для тех шрифтов которые это умеют.
Параметр DPI тут влияет на расчет размеров отрисовки шрифта, соотношение между «пунктами» и «пикселями» (и размеры элементов интерфейса в некоторых программах).
В настройках одних программ размер указывается просто цифрой, скажем »16» — это в пунктах, а в других — в пикселях,»16 px»

px = pt * DPI / 72pt = px * 72 / DPI

Раскладка клавиатуры

Клавиатура настраивается стандартно, через Xkb. В стартовом скрипте .xinitrc перед запуском wmaker установить раскладки:

setxkbmap -layout us, ru -option grp: caps_toggle, grp_led: caps

Это даёт переключение раскладки клавишей CapsLock, с отображением состояния лампочкой caps
При этом стандартное поведение CapsLock (прописные-строчные) — через Shift-CapsLock.

Возможны и другие кобинации, типа ctrl_alt_toggle, ctrl_shift_toggle и т.д., кто как привык.

Звук

Некоторые приложения умеют работать напрямую через ALSA, для них не требуется ничего особенного.
Проверка:

aplay /usr/share/sounds/alsa/Front_Center.wav

Если звука нет — стоит проверить права:

ls -l /dev/snd drwxr-xr-x 2 root root 60 Mar 10 21:04 by-path crw-rw---- 1 root audio 116, 4 Mar 10 21:04 controlC0 crw-rw---- 1 root audio 116, 3 Mar 10 21:04 pcmC0D0c crw-rw---- 1 root audio 116, 2 Mar 10 21:04 pcmC0D0p crw-rw---- 1 root audio 116, 1 Mar 10 21:04 seq crw-rw---- 1 root audio 116, 33 Mar 10 21:04 timer

То есть пользователь должен быть в группе audio.
Его можно туда добавить разными способами, но можно и напрямую — просто вписать в /etc/group

audio: x:?: username

После перелогина права применятся. Проверка — команда id, в groups должна быть группа audio

Для некоторых приложений, например браузеров, нужен pulseaudio. Установка:

apt install pulseaudio pavucontrol

В .xinitrс внести изменения:

...
pulseaudio --start
wmaker
pulseaudio --kill
...

Заходим в графику startx, запускаем терминал, проверяем:

paplay /usr/share/sounds/alsa/Front_Center.wav

Можно еще отключить гашение экрана, если оно не нужно. В тот же самый .xinitrc перед запуском wmaker добавить:

xset s off -dpms

В общем, можно сказать что первоначальная настройка завершена, остается установить программы и настроить меню. Но уже видно, что всё работает достаточно быстро.

Несколько утилит:  — блокировка экрана — xsecurelock  — скриншоты — maim  — часы — wmclock  — забавный индикатор загрузки процессора — wmfire

Wayland

Иксы хороши тем что работают практически на любом железе. Но сейчас в моде Wayland — что ж, он тоже здесь работает.

Если не вдаваться в подробности — тут логика такая: используется «композитор», совмещающий функции «графического сервера» и «оконного менеджера», поэтому задача сводится к запуску этого самого «композитора».

В отичии от Иксов — тут вариантов не так много: образцово-показательный Weston, тайловый Sway, Compiz-подобный Wayfire, однозадачный Kiosk и всё те же монстры Gnome/KDE.
Вроде есть что-то еще -, но там всё экспериментально-самосборное.

Для поддержки чисто X-приложений — нужен еще Xwayland, которые работает внутри Wayland-композитора.

Монстров мы избегаем, тайловые менеджеры — на любителей, у Weston был какой-то глюк с x-приложениями — так что ставим Wayfire.
По факту, если кто помнит Compiz — вот почти то же самое, только быстрее.

И еще один нюанс: Wayfire требует для работы «управление сессиями», которым обычно занимается logind, который завязан на работу systemd.
Тут его нет, поэтому нужен еще seatd — легковесная замена logind.
Поэтому установка будет выглядеть так:

apt install wayfire seatd xwayland

Для работы wayland-систем нужно определить переменную XDG_RUNTIME_DIR, указывающую на католог с данными сессии пользователя.
Поскольку не используется logind, который бы ее создавал — создадим вручную, записав всё это в скрипт startw (по аналогии с startx):

#!/bin/sh

myid=$(id -u)
dir="user${myid}"

mkdir -p /tmp/${dir}
XDG_RUNTIME_DIR=/tmp/${dir} ; export XDG_RUNTIME_DIR

export XDG_SCREENSHOTS_DIR=Pictures/Screenshots

pulseaudio --start
wayfire :0
pulseaudio --kill

Здесь создается нужный каталог, а также по аналогии с .xinitrc запускается pulseaudio
(на самом деле такой скрипт — это скорее хорошо, т.к. ПОТОМ нам понадобится установка некоторых переменных, например таких как XDG_SCREENSHOTS_DIR для grimshot — это удобно делать как раз здесь)

Еще нюанс: нужно проверить каталог /dev/dri

ls -l /dev/dri total 0 drwxr-xr-x 2 root root 100 Mar 19 09:04 by-path crw-rw---- 1 root video 226, 0 Mar 19 09:04 card0 crw-rw---- 1 root video 226, 1 Mar 18 23:17 card1 crw-rw---- 1 root render 226, 128 Mar 18 23:17 renderD128

Пользователь, под которым работаем, должен состоять в группах video и render.
Делается по аналогии с /dev/snd

Вот теперь можно запускать, если всё ОК — получим «черный экран».
Выход — Ctrl-Alt-BS

Просто по умолчанию там предполагается запуск программ, которые еще не установлены — поэтому на экране ничего нет.
Настроечный файл — .config/wayfire.conf, и его нужно создать:

[input]
# поддержка языка - как и в Иксах
xkb_layout  = us,ru
xkb_options = grp:caps_toggle,grp_led:caps

[output:HDMI-A-1]
# разрешение экрана и отключение энергосбережения
# энергосбережение сбивает расположение окон
mode = 1920x1080@60
position = 0,0
transform = normal
scale = 1
dpms = off

[core]
xwayland = true
no_dynamic_outputs = true

[command]
# запуск терминала Win + T, как в WindowMaker
binding_terminal =  KEY_T
command_terminal = sakura

# по умолчанию запускается alacritty, но
# в Иксах с ним могут быть проблемы - не ставили

# запуск программ через wofi
binding_launcher =  KEY_F2
command_launcher = wofi

# Screen locker
binding_lock =  KEY_L
command_lock = swaylock -f -c 002020

# это команды которые не делают ничего.
# блокировка ненужных реакций на скролл
binding_sc1 = SCROLL_UP
command_sc1 = true
binding_sc2 = SCROLL_DOWN
command_sc2 = true
binding_sc3 = SCROLL_RIGHT
command_sc3 = true
binding_sc4 = SCROLL_LEFT
command_sc4 = true

# Screenshots
# SYSRQ - это кнопка PrintScreen
binding_screenshot = KEY_SYSRQ
command_screenshot = /usr/bin/grimshot save area
binding_screenshot_interactive =  KEY_SYSRQ
command_screenshot_interactive = /usr/bin/grimshot save screen

Это просто небольшой кусок с достаточно важными настройками: установка раскладки клавиатуры, выхода на экран, запуска терминала — как и какого, ну и несколько нюансов типа нестандартного названия кнопки PrintScreen или способа блокировать нежелательные реакции (смена окон вместо прокрутки содержимого в них, например).

Детальное описание: https://github.com/WayfireWM/wayfire/wiki/Configuration

Также можно посмотреть файлы /usr/share/wayfire/metadata/*xml, в них несложно разобраться — какие именно плагины поддерживаются и с какими настройками/

Если коротко — установлены такие же точно хоткеи как в WindowMaker, запускается тот же терминал sakura, такой же фон «рабочего стола».
Сокращены периоды анимации — оно только при демонстрации выглядит красиво, а вот работа от этого торозит. Но и совсем убирать не обязательно.

Строка состояний — waybar, меню — wofi, установка фона — swaybg, блокировка экрана — swaylock, скриншоты — grimshot.

Установим это всё:

apt install waybar wifi swaybg swaylock grimshot

Теперь можно запускать любую среду:
Иксы — startx

1b55f554677cba05b5a5ac5c33b36dc1.png

Wayland — startw

484385ca754a097af8bf2c6aa47d6825.png

И та и другая работают на этом железе достаточно быстро, а с одинаковыми настройками хоткеев и программ разницы почти нет.
В Wayfire вроде бы поприятнее переключение окон, явно задействовано GPU.

В следующей части: установка рабочих программ, приведение их внешнего вида к единому стилю, некоторые нюансы и баги.

© Habrahabr.ru