С тайлинговыми оконными менеджерами я уже сталкивался. Ещё в прошлом году на этом ресурсе я выкладывал скриншот своего рабочего стола с оконными менеджером i3wm. Я тогда ещё писал, что мне хотелось попробовать тайлинговый оконный менеджер sway, но мне не повезло с видеокартой. У меня видеокарта от Nvidia с проприетарными драйверами. Поэтому тогда и выбор пал на i3wm. Прошел год, и пришло время проверить, как сейчас обстоят дела.
Мой основной дистрибутив Gentoo, и недавно ради эксперимента был установлен на соседний раздел Slackware 15, об этом я писал месяц назад. Были поставлены такие цели:
- Установить на эти дистрибутивы оконный менеджер sway и проверить запустится ли он.
- Если sway можно запустить, произвести минимальную настройку.
- Проверить насколько он работоспособен и можно ли им пользоваться в повседневной жизни.
Для начала опишу свое железо:
- Материнская плата: Asrock FM2A68M-HD+
- Процессоры: 4 × AMD A8-7600 Radeon R7, 10 Compute Cores 4C+6G
- Память: 19,5 ГиБ ОЗУ
- Графический процессор: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2
Gentoo
На момент написания:
- Операционная система: Gentoo Linux
- Версия KDE Plasma: 5.24.5
- Версия KDE Frameworks: 5.94.0
- Версия Qt: 5.15.3
- Версия ядра: 5.17.9-zen1-gentoo (64-бита)
Sway доступен в официальном портеже gentoo в таких версиях:
- Стабильная версия — 1.7
- Альфа версия — 9999, эта версия с установкой из github.com
Для начала была установлена стабильная версия, но она ожидаемо не запустилась. Поэтому принял решение установить альфу. Альфа замаскирована. Для того чтобы её установить нужно для начала - размаскировать, а также размаскировать зависимости которые пакет тянет при установке.
echo "=gui-wm/sway-9999 **" | sudo tee -a /etc/portage/package.accept_keywords/sway
echo “=gui-libs/wlroots-9999 **” | sudo tee -a /etc/portage/package.accept_keywords/sway
echo “=app-text/scdoc-9999 **” | sudo tee -a /etc/portage/package.accept_keywords/sway
echo “=gui-apps/waybar-0.9.12” | sudo tee -a /etc/portage/package.accept_keywords/sway
Также нужно указать нужные use флаги для сборки.
echo "gui-wm/sway swaybar swaybg swayidle swaylock swaymsg swaynag tray wallpapers X" | sudo tee -a /etc/portage/package.use/sway
echo “gui-libs/wlroots x11-backend” | sudo tee -a /etc/portage/package.use/sway
После чего запустим установку пакетов:
sudo emerge -avq gui-wm/sway
если установка завершилась без ошибок, продолжим.
Для того, чтобы sway запустился с драйвером Nvidia, отредактировал файл /usr/share/wayland-sessions/sway.desktop заменив строку Exec=sway на Exec=env QT_QPA_PLATFORMTHEME=kde WLR_NO_HARDWARE_CURSORS=1 sway --unsupported-gpu
Где QT_QPA_PLATFORMTHEME=kde - используем тему kde глобально.
WLR_NO_HARDWARE_CURSORS=1 - без этого параметра (мухи отдельно, котлеты отдельно) Sway на одном TTY, а курсор на другом.
sway --unsupported-gpu - ну а без этого параметра sway на картах от Nvidia с проприетарными драйверами не запустится.
Завершив сессию plasma kde в sddm выбрал сессию sway и о чудо она запустилась. После чего начал её настройку.
Slackware 15
В официальном репозитории оконного менеджера Sway-wm нет. Но есть возможность собрать её из слакбилдов. На сайте slackbuilds.org есть сборочный пакет версия пакета 1.7, а как я уже писал с драйвером от Nvidia эта версия не работает. Пришлось хитрить. На странице пакета sway, а также в файле README можно прочитать от каких пакетов зависит сборка sway. Такие пакеты как swaybg, seatd, wlroots будем загружать и устанавливать из github.com, так как для сборки последней версии sway нужны последними версии этих пакетов, остальные можно установить из репозитория slackbuilds.org.
Для сборки и установки пакетов с этого сайта есть отличная утилита sbopkg. Использование ее интуитивно понятно. Она имеет псевдо-графический интерфейс, из которого можно выполнить синхронизацию, поиск пакетов на сайте slackbuilds.org, редактирование слакбилдов пакета, сборку и установку нужного пакета. Пакеты sway, swaybg, grim, wlroots будем ставить по другому, остальные из приложения sbopkg.
Покажу на примере пакета wlroots. На странице пакета есть ссылка на домашнюю страницу проекта. Переходим на неё. В терминале создадим директорию source и перейдём в нее.
mkdir source && cd source
Загрузим исходники.
git clone https://gitlab.freedesktop.org/wlroots/wlroots.git
Переименуем загруженную директорию
mv wlroots{,-9999}
Я использую -9999 по привычке, так в gentoo обозначаются альфа версии приложений, вы можете использовать любые числа или символы.
Упакуем директорию.
tar czvf wlroots-9999.tar.gz ./wlroots-9999
Загрузим нужные для сборки файлы со страницы пакета:
wget https://slackbuilds.org/slackbuilds/15.0/libraries/wlroots/README
wget https://slackbuilds.org/slackbuilds/15.0/libraries/wlroots/slack-desc
wget https://slackbuilds.org/slackbuilds/15.0/libraries/wlroots/wlroots.SlackBuild
wget https://slackbuilds.org/slackbuilds/15.0/libraries/wlroots/wlroots.info
Отредактируем файл wlroots.Slackbuild.
Заменим строчку VERSION=${VERSION:-0.15.1} на VERSION=${VERSION:-9999}
Сделаем его исполняемым:
chmod +x wlroots.Slackbuild
И запустим:
sudo ./wlroots.SlackBuild
По окончанию сборки в /tmp будет лежать файл wlroots-9999-x86_64-1_SBo.tgz, установим его:
installpkg /tmp/wlroots-9999-x86_64-1_SBo.tgz
Эту процедуру повторим со всеми пакетами нужных по зависимостям пока не соберём и установим sway.
После чего отредактируем /usr/share/wayland-sessions/sway.desktop также как мы делали выше с Gentoo. Завершив сессию и потом авторизируемся в сессии sway wayland - должно заработать. После чего можно настраивать её под себя.
Настройка Sway
Описывать настройку Sway как и i3wm можно бесконечно долго. Поэтому чтобы не плодить лишние сущности использовал plasma kde по максиму (чую комментарии типа "поднял kde в sway”).
Темы оформления подтянулись из плазмы. Оформление breeze + kvantum благодаря уже настроенной теме в плазме и переменной QT_QPA_PLATFORMTHEME=kde в /usr/share/wayland-sessions/sway.desktop.
Вместо swaybar - waybar (еще одно приложение, на настройку которого можно потратить много времени, а описать это все еще больше. При настройке я только цвет блоков поменял и прозрачность выставил. С иконками небольшая проблема, кроме шрифтов awesome, установлены шрифты weather icons, а они конфликтуют с шрифтами awesome, помнится такая проблема была в polybar, но там это решалось путем конкретного указания какой шрифт использовать перед самой иконкой. здесь я пока не понял как это сделать. ).
Терминал konsole.
Вместо pulseaudio - pipewire + pavucontrol-qt
Файловый менеджер - dolphin
Сеть - systemsettings5 kcm_networkmanagement
Использовал официальный конфиг Sway с некоторыми своими дополнениями.
cp /etc/sway/config ~/.config/sway/config
Добавил в конфиг отступы:
gaps inner 6
gaps outer 3
Терминал
Строку set $term foot привел к такому виду:
#set $term foot
set $term konsole
Меню
Вместо rofi использовал krunner:
#set $menu exec $term -e /usr/bin/sway-launcher-desktop
set $menu exec krunner
Фон
output * bg /home/dima/Изображения/anime-girl_3840x2160_z258r.jpg fill
#output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
Раскладка клавиатуры:
input * {
xkb_layout us,ru
xkb_options grp:alt_shift_toggle}
Скриншоты
Для скриншотов использовал grim в связке с slurp.
В портежах Gentoo есть оба эти пакеты.
На момент написания статьи grim имеет такие версии пакетов:
Стабильная 1.3.1 - с драйвером Nvidia не работает
Условно стабильная 1.4.0-r1 - работает, ставим ее.
echo “=gui-apps/grim-1.4.0-r1” | sudo tee -a /etc/portage/package.accept_keywords/grim
sudo emerge -avq gui-apps/grim
slurp имеет такие версии:
Стабильная 1.2.0 - не работает
1.3.2 - работает, ставим ее:
echo “=gui-apps/slurp-1.3.2” | sudo tee -a /etc/portage/package.accept_keywords/slurp
sudo emerge -avq gui-apps/slurp
А в файл конфигурации добавляем такие строки:
bindsym Print exec grim ~/Изображения/screen-"$(date +%s)".png
bindsym $mod+Print exec grim -g "$(slurp)" ~/Изображения/screen-"$(date +%s)".png
Для Slackware в репах slackbuilds.org есть только пакет grim версии 1.4.0, ставим его через sbopkg. А вот пакета slurp нет. Ставим его отсюда по инструкции внутри.
Waybar
Поменял swaybar на waybar. Waybar есть в официальном портеже Gentoo. Для Salckware этот пакет также присутствует на slackbuild.org:
bar {
swaybar_command waybar
}
Всплывающие уведомления
Для уведомлений использовал утилиту mako. Для gentoo ситуация проще в репозиториях имеется нужный пакет gui-apps/mako. И добавил в файл конфигурации такую запись:
exec mako
А вот для Slackware - нет. Сделал так. Скачал релиз с сайта.
mkdir sources && cd sources
wget https://github.com/emersion/mako/releases/download/v1.6/mako-1.6.tar.gz
Распаковал архив и перешел в директорию с исходными файлами.
tar xfv mako-1.6.tar.gz && cd mako-1.6
И выполнил.
meson build
ninja -C build
build/mako
После сборки просто поместил собранный файл в свою bin директорию.
cp build/mako ~/bin
А в файл конфигурации добавил такие строки.
exec dbus-daemon --session --address=unix:path=$XDG_RUNTIME_DIR/bus - эту строку подсмотрел в файле README.md, она нужна для ручного запуска демона DBUS в системах сelogind.
exec ~/bin/mako
Другие настройки
Добавил в конфиг такие строки для нормальной работы приложений от kde.
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec /usr/lib64/libexec/kf5/start_kdeinit &
exec /usr/lib64/libexec/polkit-kde-authentication-agent-1 &
В Gentoo pipewire настроен через systemd.
В Slackware пришлось добавить такие строки.
exec --no-startup-id /usr/bin/daemon -frB --pidfiles=~/.run --name=pipewire /usr/bin/pipewire
exec --no-startup-id /usr/bin/daemon -frB --pidfiles=~/.run --name=pipewire-pulse /usr/bin/pipewire-pulse
exec --no-startup-id /usr/bin/daemon -frB --pidfiles=~/.run --name=pipewire-media-session /usr/bin/pipewire-media-session
Захват видео
Для захвата видео с экрана есть две утилиты.
wf-recorder
Эта небольшая утилита позволяет производить захват видео с экрана монитора, а также части экрана с помощью slurp.
В репозиториях Gentoo она есть в наличии, но опять же с драйвером Nvidia не работает. Но если установить ее с официальной страницы - работает. На сайте есть подробная инструкция по установке и использованию. Также утилита поддерживает захват видео со звуком. Для ее работы должны быть установлены ffmpeg для захвата видео и pulseaudio или pipewire для звука. Отмечу от себя захват производит нормально но с частотой 16 fps, выше поднять не смог. Утилиту в принципе даже устанавливать не требуется, работает прямо из сборочной директории.
Пример использования:
wf-recorder --audio --file=recording_with_audio.mp4
Я снял небольшие видео о работе в sway.
Работа оконный менеджера Sway с драйвером Nvidia на операционной системе Gentoo.
Запуск Sway на видеокарте Nvidia с проприетарными драйверами на операционной системе Slackware 15
wlrobs
wlrobs - это плагин для obs-studio, он позволяет захватывать экран в среде wayland. Инструкция по установке на сайте.
Обидно, но заставить работать эти утилиты в другом wayland окружении кроме sway мне пока не удалось.
Выводы
То, что удалось заставить работать оконный менеджер sway на драйверах Nvidia, это хорошо и, будем надеяться, что ситуация будет только улучшаться. Даже со всеми косяками в использовании, такими как мерцание экрана, можно сказать, что им можно пользоваться. Большим недостатком я считаю отсутствие приложений под wayland. Ситуация меняется, но, к сожалению, медленно.
Комментарии
18:08
20:00
20:46
16:42
18:47
21:09
09:58
спсб
прояснил
00:47