Статус разработки прослойки для обеспечения работы X11-приложений поверх Wayland
Тьяго Виньятти (Tiago Vignatti) опубликовал развернутое описание принципов работы и информацию о текущем состоянии развития компонента XWayland, предназначенного для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland и композитного сервера Weston через организацию запуска полноценного X.Org-сервера в роли клиента Wayland. В частности, XWayland может быть использован для запуска приложений, использующих GTK2+ и Qt 4, а также для программ вызывающих функции Xlib.Интеграция обеспечивается через использование в X.Org-сервере специальных драйвера и бэкенда, которые подменяют уровень взаимодействия с оборудованием на прослойку для вывода через Wayland. Дополнительно в состав компонентов XWayland включён отдельный оконный менеджер, добавляющий обрамление и строку с заголовком для окон X11-приложений, и менеджер буфера обмена, позволяющий обеспечить функции выделения и копирования текста. Все сформированные X-окна перенаправляются в форме битмапов в буфер DRM при помощи фиктивного видеодрайвера, что позволяет обрабатывать вывод X11-программ на стороне Wayland точно также как вывод обычных Wayland-клиентов и даёт возможность обеспечить бесшовную интеграцию с X-сервером, а также свести к нулю паразитную нагрузку за счёт избавления от необходимости преобразования протоколов.
Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. Для запущенных в дальнейшем X11-приложений будет использована уже запущенная копия X-сервера. Сам процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland. Для организации ввода, по аналогии с организацией вывода, для X-сервера создаются фиктивные клавиатура и устройство управления указателем. В настоящее время функциональность XWayland уже доведена до рабочего состояния (см. видеоролик ниже).
Из других достижений развития Wayland и Weston, представленных в этом месяце, можно упомянуть : обеспечение поддержки виртуальных экранов; добавление поддержки анимированных курсоров и средств для изменения оформления курсора; поддержку ведения лога; реализацию часов для пользовательской оболочки desktop-shell на базе Weston.
Напомним, что Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавится от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. Взаимодействие с аппаратным обеспечением, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек Gtk3+, Qt 5, SDL, Clutter и EFL (Enlightenment Foundation Library).
В рамках проекта Weston развивается один из прототипов реализации композитного сервера. Подчёркивается, что это лишь одна из реализаций (по аналогии с оконными менеджерами), так как в роли композитного сервера может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в таких существующих композитных менеджерах для X11, как KWin и Compiz. Композитный сервер Weston может работать с использованием DRM-модуля ядра Linux, поверх X11 или поверх другого композитного сервера Wayland.
© OpenNet