RedOS 8 и sway

RedOS - это импортзамещанная ОС, по сути - пряморукая центосообразная сборка.

Sway - это тайлинговый оконный менеджер.

По умолчанию RedOS идет с DE Mate. Есть также сборки на Gnome и KDE. А вот тайлинговых сборок по умолчанию не предлагается, к сожалению. Давайте поставим sway.

Спойлер. Я ожидал, что будет штурм и превозмогание, а оказалось, что все встало просто на раз, как родное. И Wayland, и сам sway, и все родные апплеты от Mate.

Итак, берем сборку RedOS на основе Mate. Sway уже есть в стандартных репозиториях и устанавливается невероятно просто:

sudo dnf install sway

sudo dnf install sway
sudo dnf install sway

Установка проходит без проблем.

Теперь идем в менеджер входа в систему и разрешаем Wayland. Какой менеджер установлен, легко находится по инструкции от вендора.

systemctl status display-manager.service

Видим, что это gdm, идем в соответствующий конфиг и меняем одну строчку:

sudo vi /etc/gdm/custom.conf

/etc/gdm/custom.conf
/etc/gdm/custom.conf

WaylandEnable=true

Перезагружаем систему. Видим теперь, что можем войти в sway.

Выбор DE при входе в систему. Появился Sway
Выбор DE при входе в систему. Появился Sway

Заходим в sway.

Все работает
Все работает

Примечание. У меня все же не все заработало. При использовании виртуалки режиме видео Virtio/3D acceleration наблюдались визуальные артефакты и задержки в работе гостевой системы. После переключения в режим QXL проблемы ушли.

Проверяем - честный Wayland

$ echo $XDG_SESSION_TYPE
wayland

Итак, вроде можно пользоваться, но для начала выполним некоторые настройки.

Скопируем конфигурационный файл в наш домашний каталог

mkdir ~/.config/sway && cp /etc/sway/config ~/.config/sway/

Все наши настройки будем делать в этом файле: ~/.config/sway/config

Первым делом надо разобраться с буфером обмена, иначе как я буду копировать куски конфига и выводы команд сюда? В версии Mate все бесшовно копировалось через интерфейс Spice между хостом и виртуалкой через обычный буфер обмена. После перехода на Sway перестало. Интересно почему.

Передача данных из буфера определяется с помощью клиента spice-vdagent. Но он у меня запущен и работает корректно. Так в чем же дело?

spice-vdagent работает корректно
spice-vdagent работает корректно

Смотрим логи:

sudo grep spice /var/log/messages

Jan 17 19:30:56 localhost spice-vdagent[7199]: vdagent started
Jan 17 19:30:56
localhost spice-vdagent[7199]: display: failed to call GetCurrentState from mutter over DBUS
Jan 17 19:30:56
localhost spice-vdagent[7199]: error message: Cannot invoke method; proxy is for the well-known name org.gnome.Mutter.DisplayConfig without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag
Jan 17 19:30:56
localhost spice-vdagent[7199]: Received Graphics Device Info:
Jan 17 19:30:56
localhost kernel: input: spice vdagent tablet as /devices/virtual/input/input7
Jan 17 19:30:56
localhost spice-vdagentd[1245]: opening vdagent virtio channel
Jan 17 19:30:56
localhost spice-vdagent[7199]: Adding graphics device info: channel_id: 0 monitor_id: 0 device_address: pci/0000/01.0, device_display_id: 0 xrandr output ID: 33
Jan 17 19:30:56
localhost spice-vdagent[7199]: display: failed to call GetCurrentState from mutter over DBUS
Jan 17 19:30:56
localhost spice-vdagent[7199]: error message: Cannot invoke method; proxy is for the well-known name org.gnome.Mutter.DisplayConfig without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag
Jan 17 19:30:56
localhost spice-vdagent[7199]: Received Graphics Device Info:
Jan 17 19:30:56
localhost spice-vdagent[7199]: Adding graphics device info: channel_id: 0 monitor_id: 0 device_address: pci/0000/01.0, device_display_id: 0 xrandr output ID: 33
Jan 17 19:30:56
localhost spice-vdagent[7199]: display: failed to call GetCurrentState from mutter over DBUS
Jan 17 19:30:56
localhost spice-vdagent[7199]: error message: Cannot invoke method; proxy is for the well-known name org.gnome.Mutter.DisplayConfig without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag
Jan 17 19:30:56
localhost spice-vdagent[7199]: Received Graphics Device Info:
Jan 17 19:30:56
localhost spice-vdagent[7199]: Adding graphics device info: channel_id: 0 monitor_id: 0 device_address: pci/0000/01.0, device_display_id: 0 xrandr output ID: 33

Короче, что-то с Wayland у него на срастается. Есть хорошее обсуждение на эту тему.

В том же обсуждении предлагается использовать утилиту xsel.

# Copy to send to host
echo "Foo" | xsel -ib
# Paste from host
xsel -ob

В RedOS утилита xsel уже установлена. А как же теперь управлять буфером?

Есть стандартный пакет wl-clipboard, в состав которого входят утилиты wl-copy, wl-paste.

Добавляем в конфиг:

bindsym $mod+c exec sh -c 'wl-paste --primary | xsel -ib'
bindsym $mod+insert exec sh -c 'xsel -ob | wl-copy --primary'

Первая строчка копирует выделенный текст и отправляет в xsel -ib. Теперь он доступен в буфере на хосте.

Вторая строчка забирает из буфера на хосте и кладет в свой буфер на виртуалке. Я так и не нашел как можно вставить текст в то место, где курсор, поэтому вставлял отдельным нажатием кнопок, например, Shift+Insert.

Теперь настроим панель.

install waybar

Добавляем в конфиг:

bar {
position top
swaybar_command waybar
}

Перезапускаем sway: $mod+Shift+c

Waybar появился с настройками по умолчанию. Если нужно, копируем конфиг:

mkdir ~/.config/waybar && cp /etc/xdg/waybar/config ~/.config/waybar

Я лично вырезал из него встроенный по умолчанию mpd (Media Player Daemon) т.к. у меня его не оказалась, а waybar сыпал в логи ошибку, что его не видит.

Сеть

Давайте использовать стандартный апплет, который остался от Mate. В конфиг sway добавляем:

exec_always nm-applet -indicator

Звук

Если присмотреться, в конфиге waybar есть такая строчка:

"pulseaudio": {

...

"on-click": "pavucontrol"

...

}

При нажании та иконку звука на панели ничего не происходит. Устанавливаем pavucontrol:

sudo dnf install pavucontrol

Все, работает.

Итак, вот что получилось:

Sway под Redos, nm-applet, pavucontrol, стандартный для Mate файловый менеджер Caja и два экземпляра терминала foot. Сверху waybar. Tray подцепился сам со станадртным настройками waybar, там Telegram и nm-applet с контекстным меню.
Sway под Redos, nm-applet, pavucontrol, стандартный для Mate файловый менеджер Caja и два экземпляра терминала foot. Сверху waybar. Tray подцепился сам со станадртным настройками waybar, там Telegram и nm-applet с контекстным меню.

Меню

Родное меню некрасивое, устанавливаем Fuzzel:sudo dnf install fuzzel

Меняем менюшку в конфиге. Комментируем что было, прописываем новое.

#set $menu dmenu_path | dmenu | xargs swaymsg exec -- set $menu "fuzzel --show drun"

Уведомления

Не меняем ничего, все уже настроено. Проверяем:

notify-send Привет "с большого бодуна"

Ну и конечно же меняем обои.

Вот что в итоге получилось
Вот что в итоге получилось
Информация на этой странице взята из источника: https://habr.com/ru/articles/986176/