Релиз Wayland 1.6
Представлен стабильный релиз протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.6, а также развиваемого параллельно композитного сервера Weston 1.6. Ветка 1.6 обратно совместима на уровне API и ABI с выпусками 1.x, но дополнительно содержит порцию улучшений, расширяющих возможности протокола и композитного сервера Weston. Следующий выпуск 1.7 запланирован на 13 февраля. Основные новшества Weston 1.6:
Усовершенствована поддержка протокола xdg-shell. К сожеланию, по сравнению с выпуском 1.5 наблюдается нарушение совместности в поддержке xdg-shell. Протокол xdg-shell предназначен для организации взаимодействия между приложениями и десктоп-окружением, в том числе востребованного для обеспечения полноценной работы GNOME Shell поверх Wayland; Добавлен механизм маскировки weston_layer; В DRM-бэкенде обеспечено извлечение информации о размере курсора из ядра; Поддержка управления частотой повторения ввода символов при удержании клавиши в нажатом положении; Реализация wl_display_add_socket_auto () избавлена от необходимости указания сокета при запуске Weston поверх другого экземпляра Weston; По умолчанию задействована библиотека libinput, которая также используется в таких проектах, как Clutter и GNOME. Старый код для работы с устройствами ввода данных пока оставлен в качестве запасного варианта, но его поддержка будет прекращена в выпуске 1.7; Добавлены дополнительные настройки для desktop-shell; Из коробки обеспечена работа сборочного сценария «make distcheck», не требуя дополнительных манипуляций; Обеспечено завершение работы Weston, в случае раннего завершения weston-desktop-shell, что позволяет решить проблемы с подвисанием с черным экраном; Добавлена опция для принудительного включения numlock при запуске с бэкендами DRM и fbdev; Основные новшества Wayland 1.6:
В протокол wl_keyboard добавлена информация о частоте повторения ввода; В libwayland-client внесены дополнения для обработки ошибок, в частности, приложение теперь может запросить более детальную информации об ошибке протокола; В wl_surface добавлено перечисление ошибок; В wl_display_add_socket_auto () из состава libwayland-server обеспечен автоматический поиск свободного имени сокета; Реализована большая порция новых тестов для 'make check'. Подготовлен фреймворк для упрощения тестирования взаимодействия клиента с сервером; Проведена работа над ошибками в коде многопоточности и выставления блокировок; Добавлена функция wl_display_roundtrip_queue (); Прекращено раскрытие глобальной переменной wl_display. Экспериментальная поддержка функционирования поверх Wayland уже доступна в свежих выпусках веток KDE 4 и KDE 5. В GNOME поддержка Wayland также пока носит экспериментальный характер, но в выпуске GNOME 3.14 ожидается реализация полноценного пользовательского сеанса на основе Wayland, пригодного для реальной работы. В частности, по сравнению с GNOME 3.12 в версии 3.14 появится поддержка раскладок клавиатуры, операций Drag-and-Drop и поддержка сенсорных экранов. За несколькими исключениями, практически решены проблемы с запуском типовых приложений GNOME при работе поверх Wayland.
В дальнейших выпусках проект GNOME планирует перейти на Wayland в качестве первичной платформы, а разработчики KDE намерены обеспечить работу поверх Wayland не хуже, чем X.Org. Более того, полноценная поддержка работы GNOME поверх Wayland будет обеспечена уже в осеннем выпуске дистрибутива Fedora 21. Полный по умолчанию на Wayland произойдёт не раньше выпуска Fedora 23.
Поддержка Wayland также реализована в выпуске проекта Enlightenment E19 и в панели Cairo-Dock, а также ожидается в одном из будущих выпусков MATE. Wayland уже используется в мобильных платформах Sailfish и Tizen 3. Кроме существующих систем активно развиваются новые десктоп-окружения, работающее только на базе технологий Wayland — Hawaii и Orbital. Для тестирования работы GNOME, KDE и Enlightenment, Hawai и Orbital поверх Wayland развивается специальный Live-дистрибутив Rebecca Black Linux.
Wayland представляет собой протокол взаимодействия композитного сервера и работающих с ним приложений. Клиенты самостоятельно выполняют отрисовку своих окон в отдельном буфере, передавая информацию об обновлениях композитному серверу, который комбинирует содержимое буферов отдельных приложений для формирования итогового вывода с учётом возможных нюансов, таких как перекрытие окон и прозрачность. Иными словами, композитный сервер не предоставляет API для отрисовки отдельных элементов, а оперирует только с уже сформированными окнами, что позволяет избавиться от двойной буферизации при использовании высокоуровневых библиотек, таких как GTK+ и Qt, берущих на себя работу по компоновке содержимого окон. В настоящее время поддержка прямой работы c Wayland уже реализована для библиотек GTK3+, Qt 5, SDL (начиная с выпуска 2.0.2), Clutter и EFL (Enlightenment Foundation Library).
В рамках проекта Weston развивается одна из реализаций композитного сервера. В роли композитного сервера также может выступать любой другой продукт, поддерживающий протокол Wayland. Например, в настоящее время ведётся работа по обеспечению поддержки Wayland в KWin. В текущем виде Weston уже вышел за рамки набора примеров для тестирования протокола Wayland, но продолжает позиционироваться как эталонная система, которая может обрастать функциональностью через плагины и дополнения. При этом Weston не будет развиваться как обособленное десктоп-окружение, а будет представлять собой ядро и плагинный API для создания таких окружений, по аналогии с тем, как сервер X.Org лежит в основе современных графических систем. Пользовательские оболочки и расширенные функций управления окнами предлагается реализовывать в форме внешних бэкендов к Wayland.
Взаимодействие с аппаратным обеспечением в Wayland/Weston, например, проведение инициализации, переключение видеорежимов (drm modesetting) и управление памятью (GEM для i915 и TTM для radeon и nouveau) графических карт, может производиться напрямую через модуль, работающий на уровне ядра, что позволяет обойтись без привилегий суперпользователя. Композитный сервер Weston может работать не только с использованием DRM-модуля ядра Linux, но и поверх X11 или поверх другого композитного сервера Wayland. Кроме того, развиваются проекты по обеспечению работы поверх графического стека платформы Android.
Для обеспечения выполнения обычных X11-приложений в окружении на базе Wayland используется DDX-компонент XWayland (Device-Dependent X), похожий по организации работы на Xwin и Xquartz для платформ Win32 и OS X. Поддержку запуска X11-приложений планируется встроить непосредственно в композитный сервер Weston, который при попытке выполнения X11-приложения будет инициировать запуск X-сервера и связанных с ним компонентов XWayland. При таком подходе процесс запуска X11-приложений будет бесшовным и неотличимым для пользователя от запуска приложений, работающих напрямую с Wayland.
Для решения вопроса с организацией работы с приложениями, запущенными на другой машине, для Wayland подготовлен прототип системы удалённого рендеринга, выполненный в виде дополнения к композитному серверу Weston. Дополнение выступает в роли надстройки для обеспечения сетевого взаимодействия при организации рендеринга и передачи событий от устройств ввода. Взаимодействие происходит на уровне двух композитных менеджеров, т.е. композитный сервер Weston на локальной системе, на которой работает пользователь, может отображать отдельные окна из композитного сервера Weston, запущенного на удалённой системе. Трансляция вывода реализована на основе передачи изменения содержимого отдельных окон, обслуживаемых композитным сервером. По сети передаются только изменившиеся элементы окон, изменения вычисляются на уровне битмапов и передаются с использованием протокола похожего на VNC. Для организации удалённой работы также подготовлены бэкенды для использования протоколов RDP и SPICE.
© OpenNet