Labwc – оконный менджер для Wayland на основе библиотеки wlroots. Является духовным наследником Openbox, использует похожую конфигурацию через знакомые любому юзеру Openbox’а четыре файла: autostart
, environment
, menu.xml
и rc.xml
. Поддерживает темы от Openbox с небольшими дополнениями, например можно использовать значки кнопок окон в формате .svg вместо .xpm.
Вот уже больше года Labwc стоит у меня как второй WM просто «на потыкать» и параллельно посмотреть, что изменилось в новой версии, а в качестве основного WM я использую Sway. Благо, они оба на основе wlroots, поэтому софт используется почти одинаковый и писать много новых конфигов не приходится.
Использованию Labwc на постоянной основе сильно мешает тот факт, что у Labwc нет и не будет своего IPC в отличии от Sway. И нет его у проекта по чисто идеологическим соображениям. Со страницы Labwc на GitHub:
… the Wayland community has achieved an amazing amount so far, and we want to help solve the unsolved problems to make Wayland viable for more people. We think that standardisation and de-fragmentation is a route to greater Wayland adoption, and wanting to play our part in this, Labwc only understands wayland-protocols & wlr-protocols, and it cannot be controlled with dbus, sway/i3/custom-IPC or other technology.
Но даже у этих кремней намедни произошёл небольшой сдвиг. Wayland-композитор в стиле Openbox это конечно отлично, но ведь к нему надо ещё и панельку, и лаунчер приложений какой-нибудь, и много чего ещё, одними окошками да менюшкой сыт не будешь.
И тут наконец один из авторов притащил в проект троянского коня в виде стороннего протокола cosmic-workspace
, созданного под нужды активно подбирающегося к релизу, написанного на Rust супер крутого и в будущем самого модного COSMIC DE. Свою ересь товарищ объяснил тем, что этот протокол в текущей версии почти идентичен основному кандидату в мейнстрим, который висит мёртвым грузом в merge requests уже четыре года, и когда его всё-таки примут (примут же, да?) усилий на замену одного на другой нужно будет абсолютно минимум.
По итогу cosmic-workspace-unstable-v1
успешно добавили в Labwc, merge request’ы с реализацией соответствующего модуля для панели любезно приняли в sfwbar и вот-вот примут в waybar. Диверсия прошла успешно, стандартизация потерпела крах, фрагментация Wayland пошла в разнос, разработчики GNOME вернулись из дома поздно, ничего не объяснили, сказали лишь начинать прикидывать идеи для нового протокола на замену раздувшегося Wayland, сам Wayland стал ещё на один маленький шажок ближе к превращению в страшного монстра наподобие X11, а у пользователей Labwc наконец-то появилась возможность переключать рабочие столы кнопочками на панели. Мне, человеку ни черта не понимающему в этих иксах и вяленых, важно только последнее, ведь без постоянно видимого индикатора рабочих столов я пользоваться электронно-вычислительной машиной не могу.
И вот, начиная с версии 0.8.0, решил попробовать Labwc как полноценный «daily driver». И в общем-то за время иcпользования никаких особых проблем я не встретил. Лишь пару раз меня выкинуло из сессии когда я пользовался GIMP – единственным приложением, которое работает у меня через XWayland. Подозреваю, что с этим и была связана причина краша композитора, логи тогда не посмотрел. Всё остальное работает так же, как и в Sway с тем же самым набором базовых утилит для wlroots-композиторов.
Ниже опишу весь набор этих самых утилит для построения минимально пригодного к использованию окружения. Может кто-нибудь сидит на Openbox’е или любом другом самосборном иксовом окружении на своём Debian old-old-old-old-stable, бед не знает, и захочет просто посмотреть как оно там сейчас в Wayland.
Начнём с самого главного ингредиента любой сборной солянки – панели.
Тут это waybar – панелька на GTK3, похожа на polybar. Модули настриваются в конфиге .jsonc, стиль панели очень удобно настраивается в обычном css-файле, т. к. это GTK. Конфиг перенесён из моего Sway-окружения практически без изменений, добавлен только модуль панели задач вместо модуля scratchpad’а. Ну и ещё модуль переключения раскладки не работает, т. к. завязан на Sway-IPC.
Скомпилирована панель с модулем cosmic-workspaces
из этого PR. Модули рабочих столов и панели задач пока очень простенькие и предоставляют только самую базовую функциональность. Каких-то вещей не хватает, например возможности как-нибудь визуально выделить css-стилем рабочий стол, на котором есть открытые окна (протокол cosmic-workspaces
поддерживает пока только три состояния рабочего стола: active
, hidden
и urgent
) или возможности вывести на панель задач только приложения с текущего рабочего стола (сейчас выводятся значки приложений просто со всех столов, нажатие на значок приложения переключает на рабочий стол на котором открыто это приложение). В других wlroots-based WM для обхода таких ограничений протоколов используется свой IPC, которого, как я уже писал выше, у Labwc нет. Но в целом, если достаточно того, что уже есть, то можно пользоваться. Хотя бы работает и не сегфолтит, так сказать.
Из других панелей пробовал git-версию xfce4-panel, она пока крашится. Хоть Labwc и указан в качестве основного референса в дорожной карте порта xfce4-panel на Wayland, не думаю что xfce4-panel станет юзабельной в скором времени под этим WM. С темпами разработки крысы придётся ждать ещё несколько лет. Грядущий релиз Xfce 4.20 с заявленной «минимальной» поддержкой Wayland вряд ли что-то изменит.
Ну и некоторые другие компоненты для построения самого кринжового базового Wayland-окружения помимо композитора и панели:
-
rofi-wayland – must-have, вероятно знакомый любому WM-юзеру. Выполняет функции запуска приложений в стиле dmenu (с сортировкой их по частоте запуска), меню завершения работы, интерфейса для менеджера буфера обмена, вставки эмодзи, калькулятора, вызова сатаны и приправы для пельменей. Если вам хватает dmenu – используйте dmenu, если нет – используйте rofi, тут всё просто.
-
cliphist – хранение и менеджмент истории буфера обмена, поддерживает изображения. Работает в связке с dmenu, rofi или любой другой dmenu-подобной утилитой. Wayland – штука очень секьюрная, если вы скопировали какой-нибудь текст в браузере, а потом случайно закрыли его, то при попытке вставить этот текст в другом приложении окажется, что ваш буфер обмена пуст. Поэтому менеджер буфера обмена также идёт в категорию must have.
-
kanshi – управление мониторами (выставить разрешение, частоту обновления, масштабирование, etc). Синтаксис похож на swayconfig + поддерживает профили + есть свой ctl, чтобы применить конфиг после изменения или переключить профиль. Как более простая альтернатива есть ещё wlr-randr (аналог xrandr). Как ещё более простое дополнение для управления питанием – wlopm (умеет только включать и выключать заданный монитор).
-
wlsunset – аналог redshift, регулирует цветовую температуру экрана в зависимости от времени суток (так называемая функция «Night Light»).
-
mako – демон уведомлений, аналог dunst. Тоже есть свой ctl для взаимодействия с историей уведомлений и не только.
-
grim + slurp + swappy – связка для создания скриншотов:
- grim – непосредственно утилита для создания скриншотов, аналог scrot;
- slurp – утилита для получения размера и координат выделенной области на экране, используется в связке с grim для создания скриншота области экрана;
- swappy – простой редактор скриншотов на GTK3 (нарисовать стрелку, заблюрить область, etc). Вдохновлён маковской утилитой для редактирования скриншотов Snappy.
Пример команды для снимка области экрана: grim -g "$(slurp)" - | swappy -f -
-
wf-recorder – запись экрана, также работает в связке с slurp для записи области экрана
-
swayidle – idle-менеджер из состава утилит Sway, чтобы снижать яркость экрана/выключать монитор/блокировать экран во время простоя. Вроде как форк какой-то аналогичной утилиты из KDE. Помню, когда-то давно пользовался Openbox, у меня там был xfce4-power-manager и он то и дело выключал мне монитор во время просмотра видео в Firefox. Со swayidle никаких проблем нет, работает отлично
-
swaylock – простейший блокировщик экрана, аналог i3lock
-
swaybg – установка обоев на рабочий стол
Если нужны значки на рабочем столе, то можно присмотреться к PCManFM-Qt – он, начиная с версии 2.0, поддерживает протокол wlr-layer-shell
и без проблем отрисует вам значки на рабочем столе в Labwc. Мне это не нужно, да и в качестве файлового менеджера я предпочитаю Nemo.
- xdg-desktop-portal-wlr + xdg-desktop-portal-gtk – порталы под wlroots, для поддержки скринкаста в другие приложения
Из базового софта использую эмулятор терминала Foot, редактор Neovim и набор приложений из Mate (Engrampa, Atril и прочее). Ещё на скрине виден консольный файловый менеджер lf и просмоторщик изображений swayimg. В качестве менеджера входа использую greetd, который запускает простейший скрипт для автологина в Labwc и переключения между Sway и Labwc.
Некоторые из конфигов выложил здесь.
>>> Просмотр (1920x2160, 2166 Kb)