LINUX.ORG.RU

Labwc: перед выходом 0.8.1

 , , ,


0

1

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.

Из базового софта использую эмулятор терминала Foot, редактор Neovim и набор приложений из Mate (Engrampa, Atril и прочее). Ещё на скрине виден консольный файловый менеджер lf и просмоторщик изображений swayimg. В качестве менеджера входа использую greetd, который запускает простейший скрипт для автологина в Labwc и переключения между Sway и Labwc.

Некоторые из конфигов выложил здесь.

>>> Просмотр (1920x2160, 2166 Kb)



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

Очень хорошо. Крутая обоина

oworope
()

Еще говорят, его меню (menu.xml) не дружит с иконками, а вот openbox умел. Так-то мелочь конечно.

krasnh ★★★★
()
Ответ на: комментарий от posixbit

Очень сильно каюсь, релиз будет только завтра, просто скриншот подтвердили за пару часов. Думал, что никто из модераторов не рискнёт начать проверять эту графоманию как минимум неделю.

spal
() автор топика

Если я правильно смог разглядеть, это у тебя переключатель воркспейсов на панели в левом верхнем углу? И как? Окна привязаны к воркспейсам, на которых запущены? При смене воркспейса меняется их показ на экране, либо всё так же в кучу свалено?

posixbit ★★
()
Ответ на: комментарий от spal

Очень сильно каюсь

Не, ничего. Некритично. Если завтра релиз, пусть остаётся «0.8.1» в названии. Ты же из master сам собрал?

posixbit ★★
()
Ответ на: комментарий от posixbit

Окна привязаны к воркспейсам, на которых запущены?

Формально не привязаны. Просто привык запускать определённые приложения на одном воркспейсе, например окна браузера всегда на первом, терминалы всегда на втором и т.д.

При смене воркспейса меняется их показ на экране, либо всё так же в кучу свалено?

Если под кучей имеется ввиду модуль панели задач (значки на панели справа от модуля воркспейсов) то нет, показ не меняется. Эти два модуля пока плохо стакаются между собой из-за ограничений протоколов, поэтому на панели задач всегда отображаются сразу все окна со всех воркспейсов.

spal
() автор топика

Если нужны значки на рабочем столе, то можно присмотреться к PCManFM-Qt – он, начиная с версии 2.0, поддерживает протокол wlr-layer-shell и без проблем отрисует вам значки на рабочем столе в Labwc

PCManFM-GTK3 тоже. Мне как-то больше кьютишной эта версия нравится, т. к. она побыстрей работает и не имеет проблем с отображением названий. Например, там нет странных сокращений Рабочий ст..., Домашняя п... и тому подобных — вместо переноса на новую строку. То есть в PCManFM-Qt нужно мышкой навести и подождать высплывающей строки для отображения полного названия.

posixbit ★★
()
Последнее исправление: posixbit (всего исправлений: 1)
Ответ на: комментарий от posixbit

У меня арч, на скрине labwc-git из аура, последней версии естественно.

spal
() автор топика

красивые обои и шрифты у Wayland))

vstartsev
()
Ответ на: комментарий от spal

всегда отображаются сразу все окна со всех воркспейсов

Да, я об этом. Это неудобно. Полноценной замены Openbox пока не получается.

posixbit ★★
()
Ответ на: комментарий от spal

показ не меняется

Если нажать на иконку свернутой программы, которая запущена на другом рабочем столе, что произойдёт? LabWC перекинет автоматически на нужный воркспейс, либо переместит окно на текущий? Если первый вариант, то это ещё более-менее юзабельно. Второй — уже как-то совсем не очень...

posixbit ★★
()
Ответ на: комментарий от posixbit

Первый вариант.

Это неудобно. Полноценной замены Openbox пока не получается.

Соглашусь, что это неудобно (так собственно всё и расписал в посте, когда писал про панель), но в целом юзабельно. Особенно для меня, человека до этого пользовавшегося Sway. Окна почти не сворачиваю, переключаюсь между ними хоткеями и панелью задач особо не пользуюсь.

spal
() автор топика
Последнее исправление: spal (всего исправлений: 1)
Ответ на: комментарий от spal

Я тоже каюсь, подтвердил быстро, ТАКАЯ графомания мне нравится.

Подправил заголовок на более корректный.

hobbit ★★★★★
()

Всё пробую на него перейти, но никак не могу настроить yambar, что было как в КДЕ.

Ololo_Trololo
()
Ответ на: комментарий от daminatorus

это не тайловый wm это из sway окна запилили, аналог jwm только на wayland

amd_amd ★★★★★
()
Ответ на: комментарий от amd_amd

Привык именно к такой панельке когда сидел на Sway, поэтому добавил просто значки открытых приложений справа от воркспейсов. Как раз на этом месте был индикатор scratchpad (аналог «свёрнутых» приложений в Sway), получилось похоже по общей логике: когда надо посмотреть, какие приложения скрыты, просто смотрю в эту область.

Так то модуль панели задач waybar можно настроить чтобы и подписи показывал и вынести этот модуль на отдельную панельку.

spal
() автор топика
Ответ на: комментарий от spal

Это проблема вейланда вообще. Спасибо за секьюрность - ибо самое страшное если супостат получивший у вас рут права вдруг сможет еще и определить на каком из воркспейсов у вас открыт vim. Поэтому вялендовые смузихлебы строго настрого скрыли эту информацию от всяких там панелек.

Теоретически реализовать можно - но понятное дело не через вейландовские протоколы а написав костыль в композиторе и ответную часть костыля в панельке. Но это теория а практической реалиации я не видел - что мате, кто крыса в вейланд версии теряют это умение. У гнома панельки как класс нет. В вейфаир такую фичу изначально не завезли, вебар тоже. Разве что кде - там свой композитор и своя же панелька.

Qui-Gon ★★★★★
()
Ответ на: комментарий от Qui-Gon

В waybar модуль панели задач написан под протокол wlr-foreign-toplevel-management. Это дефолтный протокол для менеджмента окнами в wlroots композиторах. В xfce4-panel, надо полагать, тоже используют именно его т.к. они ориентируются именно на wlroots. Этот протокол до ужаса простой, в нём у окна буквально может быть только четыре состояния: maximized, minimized, activated и fullscreen. Про существование каких-то там дополнительных сущностей вроде воркспейсов тут и в помине нет. Но этот протокол дефолт для wlroots. Нормальной, такой же более-менее распространённой среди других композиторов альтернативы нет, как и нормального мейнстримного протокола, поэтому приходится использовать то, что есть.

Другое дело KDE. Понятное дело, что разрабам KDE не надо беспокоиться о том, будет ли какая-то левая панелька нормально работать с их композитором, это не их проблемы. Главное чтобы в самой Plasma всё работало как надо, а для этой цели можно сколько угодно раздувать свой собственный kde-protocols новыми протоколами под каждый чих, и наплодить сколько угодно своих костылей. Вот уже протокол plasma-window-management, который использует у себя KDE. Он уже заточен и под взаимодействие с воркспейсами и под всё, что только можно. Но так выглядит по настоящему рабочее решение, которое сделали чтобы работало как надо здесь и сейчас, а не для бесконечных обсуждений в рассылках как-бы лучше сделать, чтобы всем было хорошо. Вообще, Plasma сейчас пожалуй эталон в плане юзабельности Wayland-окружения.

spal
() автор топика
Ответ на: комментарий от spal

Wayfire для таких вещей сделали собственный IPC на json через который можно цеплять такие вот нстандартные штуки в обход вейландовских протоколов. Но понятно что KDE который пилит команда на зарплате и мелкий композитор который пилят 2 человека в свободное от зарабатывания на хлеб время сильно отличаются по возможностям.

ну а в mate-xfce поддержка вейланда похоже пока сильно экспериментальная - накостылить чтобы работало хоть как-то а дальше если юзер потянется то может и допилят.

У себя пока вообще отключил тасклист в панели и переключаюсь через expose. Ибо тасклист общий на все воркспейсы с некоторого момента превращается в тыкву.

Qui-Gon ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.