Адаптация Wayland
Прогресс, как известно, товарищ шиложопый и на месте стоять просто неспособен. Это, к счастью, касается и многострадального графического стека в GNU+Linux. На предпочитаемых мною ARM-based устройствах (напомню, что это Raspberry Pi 4B+ в качестве рабочей станции и MNT Reform2 в качестве лэптопа) старый, но всё менее добрый с годами Xorg показывает просто ужасающую производительность, в отличие от новомодного Wayland - тиринг в видео, внезапные глитчи при отрисовке окон... Проще пристрелить и выкинуть, чем разбираться, что же пошло не так.
К счастью, человечество подарило нам прекрасный композитор sway, полностью повторяющий функциональность (и, что важно, совместимый с конфигом) оконного менеджера i3, являющегося, с моей точки зрения, безусловным совершенством в данной нише.
Разумеется, не всё гладко - многие привычные в Иксах утилиты вроде setxkbmap здесь не работают. Но выход, как водится, нашёлся.
Устройства ввода и Wayland
Раскладки клавиатуры
(если мне не изменяет память, данный конфиг уже приводился мной, но повторение — мать учения и сестра заикания)
Как уже упоминалось, setxkbmap здесь не сработает, зато, как выяснилось, sway умеет парсить .xkb-файлы. Этим и воспользуемся.
Пример конфига, добавляющего дополнительных функций бесполезной (в случае с Reform) клавише Hyper и переключение раскладок us/ru сочетанием Ctrl+Alt:
🐧tolstoevsky@💻reform ~: cat keyboard.xkb
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types {
include "complete"
virtual_modifiers Hyper;
type "HYPER" {
modifiers = Hyper;
map[Hyper] = Level2;
level_name[Level1] = "Base";
level_name[Level2] = "Hyper";
};
};
xkb_compat { include "complete" };
xkb_symbols {
include "pc+us+ru:2+inet(evdev)"
include "compose(menu)"
include "group(ctrl_alt_toggle)"
key <RWIN> { [ Hyper_L ] };
modifier_map Mod5 { <HYPR> };
key <LEFT> {
type = "HYPER",
symbols[Group1] = [ Left, Home ]
};
key <RGHT> {
type = "HYPER",
symbols[Group1] = [ Right, End ]
};
key <RTRN> {
type = "HYPER",
symbols[Group1] = [ Return, Insert ]
};
};
// xkb_geometry { include "pc(pc105)" };
};
Далее подключаем этот файл в ~/.config/sway/config:
input * {
xkb_file ~/keyboard.xkb
}
Индикация
Теперь неплохо бы видеть, какая раскладка установлена. Можно использовать светодиоды на клавиатуре, но они во-первых, не везде есть, во-вторых, не всегда удобны - на экране-то нагляднее.
Я использую стандартный swaybar, получающий данные из скрипта.
~/.config/sway/config:
bar {
position top
status_command while ~/.local/bin/status;do sleep 1;done
}
~/.local/bin/status:
#!/bin/bash
datee=$(date +"%a, %Y-%m-%d")
timee=$(date +"%H:%M")
getvolume=$(pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( 0 + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,')
netstate=$(nmcli device | grep "^wlp1s0" | awk '{print $3 " " $4}')
temp=$(sensors | grep -m1 temp1 | awk '{print $2}')
layout=$(swaymsg -t get_inputs | jq '.[1].xkb_active_layout_name')
painput=$(patoggle status | jq '.text')
echo "📆 $datee 🕖 $timee | 🔊 $getvolume | $painput | 📡 $netstate | $temp | ⌨️ $layout"
В данном случае раскладка вынимается из ответа swaymsg, и парсится jq, далее выводясь в панели в человекочитаемом виде: "English (US)" или "Russian". Ещё одна интересная, но специфичная вещь - упомянутый тут скрипт patoggle (переменная painput) — он показывает, какой аудиовыход используется в настоящий момент и переключет его, будучи вызванным без параметров. Штука специфична для Reform и для нелюбителей автоматического переключения при втыкании наушников.
Трекбол
На десктопе я вместо мыши использую трекбол Logitech Marble, который при всём своём удобстве вызывает вопрос "а как скроллить-то?". Решается приколачиванием к мелкой дополнительной кнопке (по умолчанию это кнопка "назад") новой функции:
~/.config/sway/config
input "1133:50184:Logitech_USB_Trackball" {
scroll_method on_button_down
}
Адаптация софта
Поначалу я недоумевал, почему переход "вяленый" не дал особого эффекта там, где, казалось бы, и должна была случиться основная магия - в проигрывании порн^W видео из интернетов и локального хранилища. Оказалось, что приложения просто изо всех сил старались обнаружить старые добрые Иксы и система услужливо подставляла им тормознутую прослойку Xwayland. Штош, будем отучать.
Qutebrowser
(да и для другого Qt'шного софта подходит)
Просто вызываю его скриптом, в котором объявляю следующие переменные:
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
Electron, Chrome-based
Если у вас имеются в использовании приложения на Electron (не надо плеваться, инструмент не виноват, что его часто используют обезьяны, это всего лишь движок браузера, потому, например, браузер Vieb тут очень даже в кассу), то пригодится добавить к их вызову следующие параметры:
--enable-features=UseOzonePlatform --ozone-platform=wayland
MPV
Старичок тоже поначалу зачем-то пытался воспроизводить с использованием непонятно чего, и люто тормозил в результате. Поможем ему определиться в этой жизни.Так как вызываю я его в 99% случаев из командной строки, то просто добавил в .bashrc:
alias mpv='mpv --gpu-context=wayland'
Замена привычных утилит
Уведомления
Под Иксами использовал демон уведомлений dunst. Здесь имеется аналогичная легковесная программа - mako.
Добавим в автозапуск (примеры по-прежнему для sway):
И назначим сочетание клавиш, убирающее уведомления (ненавижу, когда они пропадают сами — а если я не прочитал? А? Отвернулся чаю налить, и пропустил всё на свете, а?? То-то же!):
bindsym $mod+n exec makoctl dismiss -a
Скриншоты
Как же без них хвастаться выхлопом neofetch. Scrot остался под Иксами, здесь же у нас есть мрачный grim:
bindsym $mod+Shift+s exec grim ~/Pictures/$(date +'screenshot-%Y-%m-%d-%H-%M-%S').png
bindsym $mod+Shift+x exec grim -g "$(slurp)" ~/Pictures/$(date +'screenshot-%Y-%m-%d-%H-%M-%S').png
Картинки
Feh, опять же, плохо себя чувствует здесь. Его заменил imv. Не думаю, что тут что-то нужно описывать — просто программа, которая просто показывает картинки.
---
По итогу всех упомянутых изменений я получил на том же железе несравнимо больший комфорт в том, что касается отображения графики и нагрузки на процессор. Так что следовать за новыми веяниями стоит. Не всегда, желательно подальше от первых рядов (если вы не решили возглавить это безобразие разумеется) и читая мелкий шрифт, но :)
---
Гостевая книга
---
tags: tech, lytdybr