Sway WM с проприетарным драйвером Nvidia. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Sway WM с проприетарным драйвером Nvidia

8

Sway WM

Материал написан пользователем сайта.
Запущенные терминалы и krunner в Gentoo.
Запущенные терминалы и krunner в Slackware 15.

С тайлинговыми оконными менеджерами я уже сталкивался. Ещё в прошлом году на этом ресурсе я выкладывал скриншот своего рабочего стола с оконными менеджером i3wm. Я тогда ещё писал, что мне хотелось попробовать тайлинговый оконный менеджер sway, но мне не повезло с видеокартой. У меня видеокарта от Nvidia с проприетарными драйверами. Поэтому тогда и выбор пал на i3wm. Прошел год, и пришло время проверить, как сейчас обстоят дела.

Мой основной дистрибутив Gentoo, и недавно ради эксперимента был установлен на соседний раздел Slackware 15, об этом я писал месяц назад. Были поставлены такие цели:

  1. Установить на эти дистрибутивы оконный менеджер sway и проверить запустится ли он. 
  2. Если sway можно запустить, произвести минимальную настройку. 
  3. Проверить насколько он работоспособен и можно ли им пользоваться в повседневной жизни.

Для начала опишу свое железо:

  • Материнская плата: 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. Стабильная версия — 1.7
  2. Альфа версия — 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, но там это решалось путем конкретного указания какой шрифт использовать перед самой иконкой. здесь я пока не понял как это сделать. ).

waybar

Терминал konsole.

Вместо pulseaudio - pipewire + pavucontrol-qt

Файловый менеджер - dolphin

dolphin в gentoo

Сеть - 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. Инструкция по установке на сайте.

obs studio с запущенным плагином wlrobs

Обидно, но заставить работать эти утилиты в другом wayland окружении кроме sway мне пока не удалось.

Выводы

То, что удалось заставить работать оконный менеджер sway на драйверах Nvidia, это хорошо и, будем надеяться, что ситуация будет только улучшаться. Даже со всеми косяками в использовании, такими как мерцание экрана, можно сказать, что им можно пользоваться. Большим недостатком я считаю отсутствие приложений под wayland. Ситуация меняется, но, к сожалению, медленно.

Лайков: +19
войдите, чтобы ставить лайки
8

Комментарии

breeder
Активный пользователь
Активный
29.05.2022
18:08
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+4
войдите, чтобы ставить лайки
Ну-с, с меня первый лайк. Ибо месяц как соскочил с XFCE на Sway (i3 попользовался ровно сутки), замучившись на ноутбуке тыкать в тачпад. В итоге и рабочий комп тоже на него перевёл. Дома Devuan на работе Debian. Пожалуй, таки запилю скриншот на неделе.
Minor748
Активный пользователь
Активный
29.05.2022
20:00
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Здорово, что когда есть ребята, которые делятся опытом, инструкциями и тонкостями настройки
austrolopitek121
Активный пользователь
Активный
29.05.2022
20:46
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Круто, только что установил арч с кедами, походу ещё с sway попробую пошаманить
x230
Активный пользователь
Активный
30.05.2022
16:42
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийaustrolopitek121Родительский комментарий
0
войдите, чтобы ставить лайки
Где Sway, а где Кеды?.. Я просто не вижу общие моменты...
austrolopitek121
Активный пользователь
Активный
30.05.2022
18:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийx230Родительский комментарий
0
войдите, чтобы ставить лайки
Пробую все подряд
dimonchik230
Активный пользователь
Активный
30.05.2022
21:09
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийx230Родительский комментарий
+2
войдите, чтобы ставить лайки
Если это вопрос к автору статьи (тоесть мне) , то это приложения kde (такие как dolphin, konsole и др.) запущенные в рабочей среде sway, а не в plasma. Просто так проще всего настроить темы оформления, я уже проделывал такое с оконными менеджером i3wm. А если этот вопрос был адресован к предыдущему коментатор - то извиняюсь не понял.
x230
Активный пользователь
Активный
31.05.2022
09:58
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийdimonchik230Родительский комментарий
0
войдите, чтобы ставить лайки
+
спсб
прояснил
DrSheppard
Активный пользователь
Активный
30.05.2022
00:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Сейчас использую облегчённый вариант Fedora Openbox, но буду в ближайшее время переходить на labwc, wayland, и, хотя, инструкция как завести на nvidia для меня не очень актуальна, то всё остальное может понадобиться

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила