Представлен релиз пакета wayland-protocols 1.49, который включает в себя расширенный набор протоколов и спецификаций для дополнения базовой архитектуры Wayland. Данные инструменты необходимы разработчикам для создания современных композитных серверов и полноценных пользовательских окружений в Linux-системах.
Среди ключевых изменений и нововведений в версии 1.49 выделяются следующие:
Добавлен экспериментальный протокол xx-fractional-scale. Он открывает возможность масштабирования системы логических координат, значения в которой задаются целыми числами, что повышает точность позиционирования и увеличивает разрешение логических координат вплоть до отдельных пикселей. Это новообразование решает давнюю проблему нехватки разрешения для качественной реализации дробного масштабирования элементов интерфейса.
В стандартный протокол «linux-dmabuf» интегрирована поддержка работы на аппаратных конфигурациях с несколькими графическими процессорами (GPU). На таких конфигурациях клиентское приложение теперь может согласовывать с композитным сервером выбор конкретного GPU для рендеринга.
Протокол color-management-v1 получил поддержку метаданных изображений стандарта BT.2100. Это позволяет композитному серверу задействовать специализированные обработчики для корректной и точной цветопередачи HDR-контента, изначально созданного под операционную систему Windows.
Жизненный цикл протоколов
Все расширения в проекте последовательно проходят стадии проектирования, тестирования и стабилизации. После завершения активной разработки в категории «unstable» протокол переносится в ветку «staging» и официально включается в состав пакета wayland-protocols. По завершении этапа тестирования интерфейс перемещается в категорию стабильных.
Интерфейсы из ветки «staging» уже разрешено применять в продакшене композитных серверов и клиентского ПО, где требуется соответствующий функционал. В отличие от «unstable», в «staging» строго запрещены любые изменения, ломающие обратную совместимость. Тем не менее, при обнаружении серьезных архитектурных недоработок допускается замена расширения новой значительной версией или альтернативным аналогом.
Для ускорения внедрения новшеств и раннего тестирования разработчиками в экосистеме действует фаза «experimental». В ней разрешено вносить изменения, нарушающие совместимость, и добавлять «сырые» спецификации. Если для перехода в «staging» требуется собрать команду поддержки и получить кворум подтверждений (ACK) от участников ревью, то для попадания в «experimental» достаточно отсутствия весомых возражений (NACK) на протяжении двухнедельного периода обсуждения.
Стабильные протоколы
В текущий стабильный состав wayland-protocols, где гарантируется строгая обратная совместимость, входят:
- «viewporter» — позволяет клиентам выполнять операции масштабирования и обрезки границ поверхности на стороне сервера.
- «presentation-time» — отвечает за корректное отображение видеопотока.
- «xdg-shell» — базовый интерфейс для создания окон и управления ими (перемещение, сворачивание, разворачивание, изменение размеров).
- «linux-dmabuf» — предоставляет инструменты для формирования wl_buffer на базе подсистемы DMA-BUF.
- «tablet» — стандартизированная организация ввода с графических планшетов и дигитайзеров.
Протоколы в ветке «staging»
На этапе тестирования в ветке «staging» находятся следующие расширения:
- drm-lease — выдает ресурсы, необходимые для формирования стереоскопической картинки с раздельными буферами для левого и правого глаза при трансляции на VR-гарнитуры.
- «ext-session-lock» — определяет системные средства блокировки экрана, задействуемые во время работы скринсейверов или вывода окон авторизации.
- «single-pixel-buffer» — позволяет генерировать однопиксельные буферы, содержащие четыре 32-разрядных значения RGBA.
- «xdg-activation» — дает возможность безопасно передавать фокус ввода между независимыми поверхностями первого уровня (например, для переключения фокуса между программами).
- content-type — передает композитному серверу метаданные о типе контента для аппаратных оптимизаций. Поддерживаются режимы: none, photo (минимальная обработка для фото), video (точная синхронизация во избежание лагов) и game (минимальная задержка вывода).
- ext-idle-notify — уведомляет серверы о пользовательской неактивности для перевода железа в энергосберегающие режимы.
- tearing-control — позволяет отключать вертикальную синхронизацию (VSync) в полноэкранных приложениях для снижения задержек ввода ценой возможных разрывов кадров.
- ext-foreign-toplevel-list — предоставляет данные о верхнеуровневых поверхностях для создания кастомных панелей задач и переключателей окон.
- security-context — идентифицирует клиентов в sandbox-изоляции и ограничивает их системные полномочия.
- cursor-shape — альтернативный метод стилизации курсора через передачу набора изображений вместо привязки к wl_surface.
- «ext-transient-seat» — служит для создания изолированных временных сеансов ввода при подключении удаленных рабочих столов.
- «xdg-toplevel-drag» — расширяет механики Drag & Drop возможностью отрыва вкладок и панелей в самостоятельные окна.
- «xdg-dialog» — добавляет специфичные атрибуты для модальных и стандартных диалоговых окон.
- «linux-drm-syncobj» — инструмент явной синхронизации буферов через объекты DRM для бесшовной работы с OpenGL и Vulkan.
- alpha-modifier — делегирует расчет прозрачности поверхностей на сторону композитного сервера и KMS.
- xdg-toplevel-icon — привязка кастомных иконок к верхнеуровневым окнам.
- ext-image-capture-source и ext-image-copy-capture — стандартизированный захват экранного контента.
- xdg-system-bell — вызов системных звуковых или визуальных уведомлений.
- fifo — реализует FIFO-очередь обновления кадров через ожидание vblank вместо callback-вызовов, разгружая GPU.
- commit-timing — привязка жестких временных меток к выводу изменений графического контента.
- ext-data-control — управление расширенными функциями буфера обмена для привилегированных утилит.
- ext-workspace — поддержка концепции виртуальных рабочих столов для панелей и индикаторов.
- color-management — управление расширенным динамическим диапазоном (HDR) и цветовыми профилями ICC.
- xdg-toplevel-tag — привязка тегов к окнам для восстановления их параметров и позиций после перезапуска.
- color-representation — передача метаданных цветовых моделей (например, конвертация YCbCr в RGB).
- ext-background-effect — наложение визуальных эффектов (размытие) на полупрозрачные фоны.
- pointer-warp — программное мгновенное перемещение курсора в заданные координаты.
- xdg-session-management — восстановление оконных сессий после аварийных сбоев.
Экспериментальные протоколы и ветка unstable
В экспериментальной ветке разработчики обкатывают следующие интерфейсы:
- xx-session-management — восстановление состояния софта при падении окружения.
- xx-input-method — создание виртуальных клавиатур и IME-модулей ввода.
- xx-text-input — стандартизация передачи текста и контекста полей ввода.
- xx-cutouts — учет аппаратных вырезов под камеры на экранах устройств.
- xx-zones — создание изолированных координатных зон для логического размещения окон.
- xx-keyboard-filter — перехват и модификация горячих клавиш и событий клавиатуры.
В стабильной разработке категории «unstable» продолжают развиваться следующие интерфейсы: «fullscreen-shell», «input-method», «idle-inhibit», «input-timestamps», «keyboard-shortcuts-inhibit», «linux-explicit-synchronization», «pointer-gestures», «pointer constraints», «primary-selection», «relative pointer events», «text-input», «xdg-foreign», «xdg-decoration», «xdg-output» и «xwayland-keyboard-grab».






