Что такое wayland linux

Использование Linux с Wayland? Что нужно знать

Многие аспекты Linux дистрибутивов постоянно меняются, но некоторые компоненты существуют уже десятилетия. Одним из таких компонентов является X Window System (известной прежде всего как X), не один год ведется работа по созданию замены, которая будет более быстрой и безопасной. Эта замена – Wayland.

Wayland уже давно появился и некоторые операционные системы на базе ядра Linux приняли его в качестве протокола дисплея по умолчанию. Если у вас еще нет, есть шанс, что это случится совсем скоро. Вот что значит использовать Linux с Wayland.

Что такое Wayland?

  • Архитектура X
  • Архитектура Wayland

Изображения предоставлены: Freedesktop.org

Wayland – это протокол, который сообщает программам, как они должны отображаться на вашем экране, основываясь на ваших действиях (таких как перемещение окна или нажатие кнопки). Технически, Wayland не является заменой X-сервера сам по себе – Wayland определяет только способ, которым такой дисплей-сервер должен взаимодействовать с этими приложениями.

Wayland полагается на стороннего разработчика, известного как композитор Wayland, который будет выполнять роль сервера дисплея. Примеры включают в себя Mutter и KWin (соответственно, рабочих столов GNOME и KDE Plasma). Wayland пытается упростить связь с сервером отображения, делая дальнейшую разработку проще и быстрее.

Х существует уже давно и неуклонно продолжает строится. Что касается Wayland, как и многие технологии “будущего”, у него есть некоторые недоработки, но наряду с дисплейными серверами, которые его реализуют, Wayland набирает свои обороты. На данный момент, есть несколько вещей, которые нужно знать, чтобы сделать его гораздо более плавным.

Избегайте GTK+ 2 или Qt 4 приложений на Wayland

Большинство приложений Linux, с которыми вы общаетесь ежедневно, написаны для одного из двух графических наборов инструментов: GTK+ и Qt. Эти платформы выступают в роли клиентов для сервера отображения, запрашивая объекты, которые будут отображаться на вашем экране. Тем не менее, эти запросы должны быть поняты в первую очередь и это зависит от набора инструментов.

В результате на рабочих столах Wayland могут работать только некоторые типы программ. Например, программы GTK+ 3 также могут работать правильно. То же самое может быть написано в Qt 5 (инструментарий, на котором основан рабочий стол Plasma).

При этом, если вы попытаетесь открыть, скажем, приложение Qt 4, у вас будет хороший шанс его запустить. Wayland делает это, запуская X-сервер за кулисами, чтобы слушать приложения, которые он не может понять. Однако это может привести к более высокому использованию памяти и немного более низким скоростям. Плюс, есть некоторые вещи, которые этот подход просто не может сделать в данный момент.

Некоторые приложения несовместимы с Wayland

Wayland и X разработаны по-разному, поэтому некоторые приложения, которые работают с X, просто не смогут работать на Wayland.

Рассмотрим приложения, изменяющие цвет экрана, такие как Redshift и f.lux. Эти приложения фильтруют синий свет от вашего дисплея в зависимости от времени суток. Они работают с использованием расширений X, таких как RandR, который предоставляет программам простой способ попросить X изменить отображение вашего экрана.

В то время как Wayland предоставляет средства для воссоздания этой способности, он зависит от каждого композитора Wayland, чтобы фактически реализовать её. Это означает, что хотя одна среда рабочего стола может поддерживать что-то вроде Redshift (например, функцию GNOME Night Light, показанную выше), эта функциональность не обязательно доступна в другом месте.

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

Композитор – это необходимость

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

Wayland разработан, чтобы сделать этот процесс намного более эффективным, чем X, сделав его обязательным. X имеет композитинг в качестве дополнительной функции, через расширение под названием Xcomposite. Но из-за того, как это реализовано, это занимает немного больше времени по сравнению с Wayland.

При этом, композитинг может привести к некоторым проблемам. Композиция приводит к немного более низкой производительности программ, таких как игры. В X большинство рабочих столов выключают композитинг, когда приложение работает в полноэкранном режиме. Но многим Wayland-композиторам все еще нужно это реализовать. Если вы заинтересованы в использовании графически увесистых программ на рабочем столе Wayland, это очень важно иметь в виду.

Читайте также:  Изменить фон плиток windows 10

Nvidia может не работать с Wayland

Более конкретно, если вы используете собственный графический драйвер Nvidia, Wayland, вероятно, не будет работать для вас. Это связано с проблемой композитинга выше. Чтобы заставить этот процесс работать, ваш графический драйвер должен определенным образом общаться с компиляторами Wayland.

Видеокарты Intel и AMD не имеют этой проблемы, поскольку они используют ожидаемый стандарт, называемый GBM (Generic Buffer Management). Nvidia считает, что их способ общения с Wayland, называемый EGL, лучше и поэтому они придерживается этого.

Эта проблема может быть решена двумя способами: драйверы Nvidia реализуют GBM или композиторы Wayland реализуют EGLStreams. В настоящее время Nvidia, похоже, не заинтересована в поиске первого решения.

Как использовать Wayland

На данный момент большинство дистрибутивов Linux дают вам возможность установить Wayland, но по-прежнему используют X по умолчанию. Вы можете выполнить поиск Wayland в репозиториях вашего дистрибутива, выйти из рабочего стола и выбрать Wayland при повторном входе.

Fedora была одним из первых дистрибутивов, которые воспользовались этой тенденцией и уже несколько лет используют Wayland по умолчанию. Fedora известна тем, что использует новейшие технологии, которые могут предложить Linux дистрибутивы и в то же время, весьма удобна в использовании. Но Fedora не одна.

Некоторые дистрибутивы, которые предоставляют Wayland по умолчанию

  • Fedora
  • Debian
  • openSUSE Tumbleweed
  • PureOS
  • Red Hat Enterprise Linux
  • SUSE Enterprise Linux

Почему больше дистрибутивов не переключились? Многие ждут решения еще нескольких вопросов. Многие люди рассчитывают использовать собственный графический драйвер Nvidia, чтобы получить наиболее оптимальный игровой опыт. Некоторые хотят записать свой экран для создания подкастов или потокового видео в интернете.

Учитывая, что сервер отображения не является чем-то, что большинство из нас замечает, дистрибутивы не стремятся создавать такие заметные проблемы в обмен на выгоды, которые, хотя и реальны, существуют в основном за кулисами.

Источник

Wayland (Русский)

Wayland — протокол, который является более простой заменой Xorg. В отличие от Xorg, Wayland не имеет API отрисовки. и соответственно ей не занимается. Такие среды рабочего стола как GNOME и KDE уже поддерживают Wayland. Также существует Xwayland, который позволяет запускать приложения X11 в Wayland.

Contents

Требования

Большинство Wayland композиторов будут работать только на системах, используюших Kernel mode setting (Русский). Wayland не предоставляет графического окружения; для этого вам нужен композитор, такой как Sway или Weston.

Чтобы GPU драйвер и Wayland могли работать вместе — они должны поддерживать одинаковый буферный API. Есть два основных — GBM и EGLStreams.

Buffer API Поддержка GPU драйвером Поддержка Wayland композиторами
GBM Все, кроме NVIDIA Все
EGLStreams NVIDIA GNOME, KDE

Композиторы

Название Тип Описание
Mutter Stacking Смотрите GNOME#Starting.
sway Tiling Sway i3-совместимый оконный менеджер для Wayland. GitHub
Enlightenment Stacking and tiling Смотрите Enlightenment#Manually. Больше информации: [1] [2]
KDE Kwin Stacking Смотрите KDE#Starting Plasma.
Orbment Tiling orbment (раньше loliwm) заброшенный тайловый менеджер для Wayland.
Velox Tiling Velox простой оконный менеджер базирующийся на swc. Имеет идеи dwm и xmonad.
Orbital Stacking Orbital композитор и оболочка (скорее WM, чем DE) использующий Qt5 и Weston.
Liri Shell Stacking Liri Shell оболочка для Liri, собрана с QtQuick и QtCompositor как композитор для Wayland.
Maynard (Unclear) Maynard оболчка для Weston основаная на GTK. Не в разработке. [3][4]
Motorcar (Unclear) Motorcar — композитор для использования VR с Wayland.
Maze Compositor Floating 3D Maze Compositor 3D композитор в стиле старой FPS игры. Есть возможность перемещения
Cage Kiosk Cage Wayland композитор, который отображает лишь одно окно на весь экран.
Greenfield Stacking Greenfield Wayland в браузере
Grefsen Floating Grefsen Qt/Wayland композитор предостовляющий минимальное DE.
Waymonad Tiling Waymonad xmonad, но только на wayland
wayfire Stacking Wayfire
Weston Floating Weston
dwl Tiling dwl dwm для Wayland

Некоторые из них имеют возможность использовать экранный менеджер. Проверьте /usr/share/wayland-sessions/название_композитора.desktop .

Менеджеры входа

Ниже перечислены менеджеров дисплеем, который поддерживает работу Wayland. Столбец тип указывает, поддерживает ли экранный менеджер работу на Wayland или нет.

Название Тип Описание
GDM Запускается на Wayland Экранный менеджер рабочего окружения GNOME
LightDM Запускается на Xorg Кросс-десктопный Экранный менеджер
SDDM Запускется на Xorg Экранный менеджер на основе QML.
Ly Запускается в консоли Консольный экранный менеджер, написаный на C
greetd Демон входа в систему Минималистичный менеджер входа, поддерживает консольный и графический режим

Библиотеки графического интерфейса

Смотрите подробности на официальном сайте

GTK 3

В пакете gtk3 уже включена поддержка Wayland. GTK будет использовать wayland по умолчанию, но вы можете изменить это, установив переменную окружения GDK_BACKEND=x11 , чтобы использовать Xwayland.

Чтобы включить поддержку Wayland в Qt 5, установите пакет qt5-wayland и установите переменную окружения QT_QPA_PLATFORM=wayland . Чтобы заставить приложение использовать Xwayland установите переменную окружения QT_QPA_PLATFORM=xcb . Это может быть необходимо для некоторых проприетарных приложений, которые не используют системную реализацию Qt, к примеру zoom AUR .

Читайте также:  Обновление баз защитника windows

Clutter

Инструментарий Clutter имеет поддержку Wayland. Она включена в пакет clutter .

Для запуска SDL2 приложения на Wayland, выставите переменную окружения SDL_VIDEODRIVER=wayland .

Чтобы включить поддержку Wayland в GLFW, установите пакет glfw-wayland (вместо glfw-x11 ).

Чтобы включить поддержку Wayland в GLEW, установите пакет glew-wayland AUR (вместо glew ).

EFL полностью поддерживает Wayland. Для запуска EFL в Wayland смотрите страницу проекта Wayland.

winit

winit (библиотека для создания окон в Rust) имеет поддержку Wayland по умолчанию. Чтобы использовать Xwayland установите переменную WINIT_UNIX_BACKEND=x11 .

Решение проблем

Цветовая коррекция

Графические артефакты в GNOME

Пользователи gnome-shell могут испытывать проблемы при переходе с Xorg на Wayland. Чаще всего корнем проблемы является установленная переменная CLUTTER_PAINT=disable-clipped-redraws:disable-culling . Уберите её из /etc/environment .

Удалённый доступ к ПК

  • (20200206) wlroots (используется в sway) имеет поддержку VNC через пакет wayvnc .
  • (20180401) mutter теперь имеет поддержку удалённого рабочего стола через пакет gnome-remote-desktop . Читайте [5] для деталей.
  • waypipe-gitAUR — прозрачный прокси для запуска Wayland приложений через оболочку SSH

Cannot open display::0 в Atom, Discord

Приложения, написаные на Electron не будут работать на Wayland. Установите переменную GDK_BACKEND=x11 для запуска на Xwayland.

Источник

Wayland на замену X Window System

В предыдущем посте мы узнали, почему X Window System — один из самых успешных проектов с открытым кодом в истории, пора заменить на новое решение для графического окружения Linux. В этой же статье мы узнаем, каков из себя Wayland — наиболее вероятный кандидат на замену X.

Глоссарий Wayland

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

Compositor — Композитный оконный менеджер является одним из центральных понятий Wayland и вокруг него. Нигде толком не определено, что это такое, но термин этот используется так, как будто все всё знают. Во всяком случае на русском языке никакого определения я так и не нашел. К счастью примеры-таки проясняют суть дела. Вот их список в контексте Wayland:

  • KWin — дисплейный сервер KDE,
  • Mutter — дисплейный сервер GNOME,
  • Weston — эталонный композитный менеджер для Wayland,
  • Enlightenment — графическая оболочка рабочего стола,
  • Marco — оконный менеджер MATE.

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

Иллюстрация со страницы в википедии.

Но сказать, что есть четкая смысловая и терминологическая граница между всему этими серверами, менеджерами и композиторами , было бы обманом. Например KWin является и дисплейным сервером и WM, точно так же как и Enlightenment . Для данной статьи композитный оконный менеджер (в сокращении КОМ) и дисплейный сервер будут эквивалентами термина Compositor.

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

Weston — Эталонный дисплейный сервер протокола Wayland. Недавно вышла вторая версия КОМ-а.
EGL — платформонезависимый эквивалент программных интерфейсов OpenGL GLX/AGL/WGL, разрабатываемый Khronos Group. EGL предоставляет инфраструктурный набор для быстрой настройки приложения и инициализации сцены.

  • Механизмы для создания областей рендеринга (окно, пиксельная карта, пиксельный буфер), чтобы клиентские API могли на них рисовать и разделять их.
  • Создание графического контекста для клиентских API.
  • Синхронизация отрисовки клиентскими API а также родными API рендеринга платформы.

EGL в отличие от GLX/AIGLX умеет выполнять лишь direct rendering, в котором приложения через DRI2/DRI3 могут безопасно и быстро получать доступ к видеоаппаратуре минуя X сервер.

GLES — Подмножество OpenGL, разработанное специально для встраиваемых систем — мобильных телефонов, планшетов, компьютеров, игровых консолей.

Архитектура Wayland

Итак, что представляет собой Wayland? Так же как и в случае с X Window System, речь идет о протоколе и его реализации. Wayland — это протокол взаимодействия между КОМ и клиентами, а также его библиотечная реализация в Си. В роли клиента может выступать пользовательское приложение, X сервер или другой дисплейный сервер.

  • Цель: радикально упростить графическую среду Linux по сравнению с иксами.
  • Использует Unix Domain Sockets, сетевой прозрачности нет.
  • Главным образом использует EGL и DRI.
  • Устройства ввода-вывода управляются полностью из ядра.
  • Распределение буфера и отрисовка полностью на стороне клиента.

На самом нижнем уровне протокола клиент и КОМ синхронизируют сообщения, обмениваются упорядоченными объектами, используя средства IPC библиотек libwayland-client и libwayland-server . На этом уровне не определены способы управления оконным интерфейсом — только сообщения, передаваемые через Unix Domain Sockets, объекты и события.

Объекты создаваемые клиентом представлены структурой wl_proxy , содержащей идентификатор сообщения передаваемого серверу через сокет, void указатель данных и указатель на статичный объект wl_interface . Отправляются сообщения с помощью структуры wl_proxy_marshal .

Читайте также:  Активированная windows 10 pro x64 v1909 офис 2019 rus

Wayland — асинхронный протокол, объектно ориентированный и нацеленный на обработку сообщений. Сообщение, передаваемое от клиента серверу, есть вызов, а в обратную сторону — событие. Каждое сообщение состоит из 32-битных слов, значения представлены в порядке следования байтов хоста.

Как взаимодействуют эти блоки?

  1. Ядро регистрирует событие и отправляет КОМ-у.
  2. КОМ в своем графе сцены находит окно, которому следует доставить данное событие и он точно знает какой тип трансформации следует применить к объекту. КОМ транслирует экранные координаты в локальные для данного окна путем обратной трансформации.
  3. Клиент, отрабатывает событие, обновляя область графического интерфейса, производит рендеринг и извещает КОМ об изменениях.
  4. КОМ собирает с клиентов все данные по территориям, в которых содержимое зависимого буфера отлично от участка поверхности, и затем перекомпонует экран. Далее, дисплейный сервер подгружает новую страницу, с помощью ioctl вызова адресованного KMS.

А как происходит рендеринг? Клиенты самостоятельно производят отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях дисплейному серверу, который комбинирует содержимое буферов разных приложений для формирования итогового вывода с учетом возможных нюансов, таких как перекрытие окон и прозрачность.

Wayland vs. X

Так чем-же, все-таки отличается в лучшую сторону Wayland? Давайте пробежимся по основным пунктам, чтобы понять ради чего все затевалось. Для меня лично достаточно факта отсутствия файла настройки xorg.conf . Впрочем плодотворное влияние прямых рук на правку этого файла уже обсудили в комментариях к предыдущему посту.

  1. Версии пронизывают протокол сверху донизу. Каждый интерфейс имеет ту или иную версию, каждый объект протокола реализует определенную версию своего интерфейса. Это исключает ситуацию с постоянными конфликтами версий X из-за того, что согласование версий привязано к клиентам, а не к соединению. Если приложение поддерживает одну версию расширения, тулкит другую а X11 третью, то невозможно предсказать, что в итоге получает приложение.
  2. Работа с устройствами ввода в Wayland сильно похожа на Xinput 2.2 минус нагромождения отжившего свой век кода и Master/Slave порядком между устройствами ввода. Глобальный объект seat , т. е. место определяет группу устройств ввода, включая мышь, клавиатуру и сенсорный экран. Кошмарные проблемы с мультитачем исчезнут.
  3. Wayland в отличие от X не имеет API для отрисовки, и соответственно не занимается художествами. Все что ему требуется — буфера полные клиентских пикселей, а дальше он ими дирижирует так, чтобы приложение А не напортачило чего-нибудь в буферах, содержащих картинки приложения Б. Клиенты определяют какие пиксели будет находится в буферах и в ответе за изображение, которое высветится на экране!

  1. Wayland минимален. Вспомним, чем был X — государством в государстве, с полным набором функций ядра ОС и даже имел свой сервер печати, после того, как кому-то в голову взбрела идея добавить поддержку печати для glxgears. Так вот, всего этого в Wayland нет и никогда не будет. Основную тяжесть тащат на себе клиенты и это славно, так как они сами не захотят загибаться под тяжестью совместимости элементов UI 30-летней давности.
  2. Обязательная компоновка (compositing). Это не значит, что 3D эффекты неизбежны. Компоновка означает, бесшовное изображение, которое не трясется и не прыгает. Девиз Wayland — ни единого разрыва каждый кадр прекрасен. Каждый пиксель на своем месте, как клиент задумал и осуществил. Для сравнения, как работает расширение X Composite? Для эффектов рабочего стола, GL компоновка вполне тянет лямку, но во время просмотра видео в браузере сразу же начинаются проблемы. Окно браузера и подокно с флаш плеером никак не синхронизированы. Для них события обрабатываются независимо и остается только надеяться, что два потока не будут сильно разбегаться во времени. По этой причине во время прокрутки окна с активным видеороликом Youtube, изображение может прыгать и дергаться.
  3. Никаких шрифтов на сервере, клиенты сами справятся. Уже справляются.
  4. X страдает беспамятством, из-за чего и нужен пресловутый xfree86.conf/xorg.conf , чтобы запомнить настройки для двух и более мониторов, графических карт. Мы ведь не будем скучать без этих убойных фич в грядущей пост-X эпохе?

Ошибочные суждения об X и Wayland

Существует ряд устойчиво неправильных мнений на сей счет.

  • X юниксвейный. Ну как сказать, принципу делай что-то одно, но делай это хорошо Unix громоздкая всеядность иксов явно противоречит.
  • Сетевая прозрачность X. Да, это было-было, но прошло с тех пор как X пересел на DRI2 и разделяемую память, а работать по сети не умеют оба. Все крутится на медлительном синхронном Xlib , и выхлоп получается как с VNC, если не хуже.
  • Wayland пишут те, кто не понимает X. Ничего нет более далекого от правды — его пишут те разработчики X, кто устал постоянно латать дыры и чинить костыли. Хороший пример Daniel Stone, один из трех людей на земле, которые точно знают как работает привязка клавиатуры на X.
  • Wayland навязывает 3D. Это не так, обязательна только компоновка. Об этом уже было сказано выше.

Источник

Оцените статью