Представен е пакетът wayland-protocols 1.48, който съдържа набор от протоколи и разширения, допълващи основния протокол Wayland и предоставящи необходимите възможности за изграждане на композитни сървъри и клиентски среди.
В новата версия:
- В категорията «staging» е добавен протоколът xdg-session-management, който предоставя възможности за възстановяване на състоянието и позицията на прозорците при прекратен сеанс в среди, базирани на протокола Wayland, например след аварийно приключване на композитния сървър или приложението.
- Разширени са възможностите на протокола text-input, позволяващ на композитните сървъри да реализират методи за въвеждане и изпращане на текст в приложения. Например, добавен е флаг no_emoji за въвеждане без Emoji, реализирана е поддръжка за допълнителни действия освен вмъкване на текст, добавен е флаг language за предаване на информация за езика, добавени са заявки за показване и скриване на панела за въвеждане, добавен е флаг preedit_hint за настройка на стила на предварително редактиране.
- Добавен е експериментален протокол xx-cutouts за получаване на информация за изрези на екрана (например, области под предната камера на екрана на смартфона).
- Добавен е експериментален протокол xx-zones за създаване и добавяне на прозорци на най-високо ниво в „зони“ — среди с собствено пространство на координати. Протоколът позволява организирането на логическо подреждане на прозорците, при което всеки прозорец се разполага относно друг прозорец.
- Добавен е експериментален протокол xx-keyboard-filter за прихващане на избрани събития от клавиатурата от клиента, модифициране на входните събития или блокиране на предаването на определени събития в Wayland-повърхността, на която е поставен фокусът на входа.
Всички протоколи последователно преминават през фази на разработка, тестване и стабилизация. След като е завършена фазата на разработка (категория „unstable“), протоколът се поставя в клон „staging“ и официално се включва в пакета wayland-protocols, а след завършване на тестването преминава в категорията стабилни. Протоколите от категорията „staging“ вече могат да бъдат използвани в композитни сървъри и клиенти, където е необходима свързана с тях функционалност. В отличие от категорията „unstable“, в „staging“ е забранено извършването на промени, нарушаващи съвместимостта, но при установяване на проблеми и недостатъци по време на тестването, не се изключва заменянето с нова значителна версия на протокола или друго разширение на Wayland.
С цел ускоряване на довеждането на протоколите до разработчиците и насърчаване на ранното им внедряване в съществуващи проекти, от предишното издание беше добавен етап „experimental“, в който е позволено извършването на промени, нарушаващи съвместимостта, и добавянето на „сурови“ протоколи, които могат постепенно да бъдат доведени до необходимото ниво. Ако за попадането на протокол в етап „staging“ е необходима формирането на екип за поддръжка и получаването на определен брой потвърждения (ACK) от участниците в рецензията, то за да попадне в „experimental“ е достатъчно да няма възражения (NACK) в продължение на двуседмичен период на рецензиране.
В момента в състава на набора wayland-protocols влизат следните стабилни протоколи, при които се осигурява обратна съвместимост:
- viewporter» — позволява на клиента да извършва действия по мащабиране и изрязване на краищата на повърхността на страната сървър.
- «presentation-time» — осигурява показване на видео.
- «xdg-shell» — интерфейс за създаване и взаимодействие с повърхности като с прозорци, позволяващ да ги премествате по екрана, да ги минимизирате, разширите, промените размера и т.н.
- «linux-dmabuf» — предоставя възможности за създаване на wl_buffer-и на базата на DMA-BUF.
- «tablet» — организация на въвеждане от графични таблети.
Протоколите, тествани в клон «staging»:
- drm-lease — предоставя нужните ресурси за генериране на стерео изображение с различни буфери за лявото и дясното око при изход към шлемове за виртуална реалност.
- «ext-session-lock» — определя средства за блокиране на сесията, например, по време на работа на защитен екран или изход на диалог за аутентикация.
- «single-pixel-buffer» — позволява създаването на буфери с единичен пиксел, включващи четири 32-битови стойности RGBA.
- «xdg-activation» — позволява предаване на фокус между различни повърхности от първо ниво (например, с xdg-activation едно приложение може да переключи фокуса на друго).
- content-type — позволява на клиентите да предадат на композитния сървър информация за показаното съдържание, която може да се използва за оптимизиране на поведението в зависимост от съдържанието, например, при задаване на специфични DRM свойства, като например "тип съдържание". Декларираната поддръжка включва следните типове съдържание: none (няма информация за типа данни), photo (извеждане на цифрови снимки, изискващо минимална обработка), video (видео или анимация, изискваща по-прецизна синхронизация, за да се избегне закъснение) и game (стартиране на игри, изискващо извеждане с минимално забавяне).
- ext-idle-notify — дава възможност на композитни сървъри да информират клиентите за неактивността на потребителя, което може да се използва за активиране на допълнителни енергийни спестяващи режими след определено време на неактивност.
- tearing-control — позволява деактивиране на вертикалната синхронизация (VSync) с кадрови гасящ импулс в режим на пълен екран, прилагана за предотвратяване на разкъсвания при изхода (tearing). В мултимедийните приложения появата на артефакти от разкъсвания е нежелан ефект, но в игри с артефакти може да се понесе, ако борбата с тях доведе до допълнителни забавяния.
- ext-foreign-toplevel-list — позволява получаване на информация за повърхностите, разположени на най-високо ниво (toplevel), които позволяват организиране на закрепване на прозорци над друго съдържание, например за свързване на собствени панели и превключватели на прозорци.
- security-context — дава възможност за идентифициране на клиенти, използващи sandbox-изолация. Клиентът може да регистрира ново свързване към композитен сървър на базата на Wayland и да прикрепи контекст за безопасност, след което композитният мениджър ще ограничи възможностите за установеното свързване в съответствие с посочения контекст за безопасност.
- cursor-shape — алтернативен начин за настройка на външния вид на курсора, основан на предаването на серия от изображения на курсора вместо привързване към повърхността (wl_surface).
- «ext-transient-seat» — предназначен за създаване на временни независими сеанси (seat), предназначени за употреба заедно с виртуални входни устройства. Например, при реализиране на възможността за свързване към отдалечен работен плот, протоколът позволява създаването на отделен сеанс с виртуална клавиатура и мишка за всеки потребител.
- «xdg-toplevel-drag» — разширява механизма «drag & drop» с възможността за прикрепяне на прозорци на най-високо ниво към операцията за преместване, която може да се използва, например, за организиране на преместването на панели с инструменти или табове в браузъра с мишката. Новият протокол позволява създаването на отделящи се части от прозореца, които при преместване от този прозорец стават нови прозорци и могат да бъдат премествани над съществуващ прозорец преди повторното прикрепяне.
- «xdg-dialog» — позволява на повърхности от най-високо ниво да се задават характеристики, специфични за диалоговите прозорци, например, можете да създадете модални диалози, които блокират взаимодействието на потребителя с останалата част от интерфейса.
- «linux-drm-syncobj» — предоставя инструменти за явна синхронизация на буферите чрез обекти за синхронизация DRM (Direct Rendering Manager). Предполага се, че в контекста на синхронизация при рендериране в буфер, предложен протокол ще подобри работата с драйвърите, основаващи се на графичните API Vulkan и OpenGL (реализацията е базирана на обработчиците в драйверите). Новият протокол позволява да се уверите, че операцията по рендериране в буфера е завършена, преди композитният мениджър да визуализира този буфер.
- alpha-modifier, позволяващ на клиентите да променят нивото на прозрачност на повърхността и да прехвърлят операциите по осигуряване на прозрачност на страната на композитния сървър, който от своя страна може да пренасочи тези операции KMS.
- xdg-toplevel-icon — свързване на иконка с прозорец на най-високо ниво.
- ext-image-capture-source и ext-image-copy-capture — организация на захващане на съдържание, което се показва на екрана.
- xdg-system-bell — позволява издаването на системен сигнал, който може да се използва например като предупреждение в емулация на терминали. Формата на сигнала се определя по усмотрение на композитния мениджър; това може да бъде не само звук, но и визуална реакция.
- fifo — реализира механизъм FIFO (първият дошъл — първият излязъл) за обработка на опашката за обновяване на съдържанието на показваната повърхност. От практическа гледна точка, протоколът позволява да се използва изчакване на завършването на вертикалното сканиране (vblank) вместо извиквания на callback при всяка готовност за показване на нов кадър, което решава проблема с високото натоварване на GPU при използване на VSync.
- commit-timing — позволява свързването на ограничение на времето с съдържанието на повърхността (композитният сървър трябва да преобразува промяната на съдържанието, когато е възможно, през указания период от време, но не по-рано).
- ext-data-control — позволява на привилегированите клиенти да управляват обработката на данни, например, за реализиране на мениджъри на буфер за обмен.
- ext-workspace — реализира концепцията виртуални работни桌логове и предлага събития с информация за състоянието на работните пространства, както и възможности за активиране и деактивиране на работни пространства. Протоколът може да се използва за създаване на панели и индикатори, които показват списък на наличните виртуални работни пространства и позволяват превключване между тях.
- color-management — предоставя възможности за управление на цвета и поддръжка на разширен динамичен обхват на яркостта (HDR, High Dynamic Range). С добавеното разширение клиентските приложения могат да получават информация за свързани с цветопредаване свойства на устройствата за изход и да предават на композитния сървър данни за свойствата на цветопредаването на собственото съдържание. В композитния сървър тази информация може да се използва за автоматично управление на цвета при показване на съдържание на различни устройства за изход, например, за преобразуване на съдържанието в предоставяне, подходящо за показване на HDR монитори. За описване на цветовите пространства се използват ICC профили.
- xdg-toplevel-tag — позволява на Wayland клиентите да прикрепят тагове към повърхностите на най-високо ниво, които композитният сървър може да използва за идентификация на прозорците след повторно стартиране на приложението (например, приложението може да зададе тагове „основен прозорец“ и „настройки“ за основния прозорец и прозореца с настройки). Тази идентификация е полезна за възстановяване на позицията, размера и свойствата на прозорците след повторно стартиране, както и за определяне на специални правила за отделни видове прозорци.
- color-representation — определение на цветово представяне на Wayland-повърхността. Wayland-клиентите могат да предават метаданни, нужни за определяне на прозрачността, цветова модель, субдискретизация и диапазон на квантуване, и прилагани при преобразуването на буфера с данни, отговарящи на цветова模型 YCbCr, в представяне RGB.
- ext-background-effect — прилагане на ефекти към полупрозрачни части на Wayland повърхности, като размазване на фона.
- pointer-warp — позволява на приложението моментално да премества курсора в зададена позиция.
Протоколи, разработвани в клон "experimental":
- xx-session-management — възстановяване на състоянието на прозорците за прекратени сесии (например, след аварийно завършване на композитен мениджър).
- xx-input-method — позволява на приложенията да реализират методи за въвеждане на текст за композитни сървъри и да форматират въведения текст, което може да се прилага, например, за създаване на виртуални клавиатури и IME-слайлери (Input Method Editor) за обработка на входа.
- xx-text-input — позволява на композитните сървъри да реализират методи за въвеждане и да изпращат текст в приложенията. Протоколът стандартизира взаимодействието между композитния сървъра. и приложения, и позволява управление на такива възможности като предаване на въведен текст, обработка на събития при промяна на фокуса на въвеждане и отчитане на спецификата на полетата за въвеждане (език, маркиране на текст, тип съдържание).
Протоколите, разработвани в клона «unstable»:
- «fullscreen-shell» — управление на работата в режим на цял екран.
- «input-method» — обработка на методи за въвеждане.
- «idle-inhibit» — блокиране на стартирането на скрийнсейвера.
- «input-timestamps» — времеви маркировки за входни събития.
- «keyboard-shortcuts-inhibit» — управление прикреплението на клавишни комбинации и горещи клавиши.
- «linux-explicit-synchronization» — специфичен за Linux механизъм за синхронизация на буферите, свързан с повърхността.
- «pointer-gestures» — управление от сензорни екрани.
- «pointer constraints» — ограничения на указателите (блокиране).
- «primary-selection» — подобно на X11 осигурява работа на основния буфер за обмен (primary selection), чиято информация обикновено се вмъква с средния бутон на мишката.
- «relative pointer events» — относителни събития на указателите.
- «text-input» — организация на въвеждане на текст.
- «xdg-foreign» — интерфейс за взаимодействие с повърхностите на "съседния" клиент.
- «xdg-decoration» — рисуване на декорации на прозорците от страната на сървъра.
- «xdg-output» — допълнителна информация за видеоизхода (използва се за дробно мащабиране).
- «xwayland-keyboard-grab» — захващане на входа в приложенията XWayland.
Източник: opennet.ru
