RedOS - это импортзамещанная ОС, по сути - пряморукая центосообразная сборка.
Sway - это тайлинговый оконный менеджер.
По умолчанию RedOS идет с DE Mate. Есть также сборки на Gnome и KDE. А вот тайлинговых сборок по умолчанию не предлагается, к сожалению. Давайте поставим sway.
Спойлер. Я ожидал, что будет штурм и превозмогание, а оказалось, что все встало просто на раз, как родное. И Wayland, и сам sway, и все родные апплеты от Mate.
Итак, берем сборку RedOS на основе Mate. Sway уже есть в стандартных репозиториях и устанавливается невероятно просто:
sudo dnf install sway
Установка проходит без проблем.
Теперь идем в менеджер входа в систему и разрешаем Wayland. Какой менеджер установлен, легко находится по инструкции от вендора.
systemctl status display-manager.service
Видим, что это gdm, идем в соответствующий конфиг и меняем одну строчку:
sudo vi /etc/gdm/custom.conf
/etc/gdm/custom.conf
WaylandEnable=true
Перезагружаем систему. Видим теперь, что можем войти в 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. Но он у меня запущен и работает корректно. Так в чем же дело?
Смотрим логи:
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 hostxsel -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
Все, работает.
Итак, вот что получилось:
Меню
Родное меню некрасивое, устанавливаем Fuzzel:sudo dnf install fuzzel
Меняем менюшку в конфиге. Комментируем что было, прописываем новое.
#set $menu dmenu_path | dmenu | xargs swaymsg exec -- set $menu "fuzzel --show drun"
Уведомления
Не меняем ничего, все уже настроено. Проверяем:
notify-send Привет "с большого бодуна"
Ну и конечно же меняем обои.