Das Paket wayland-protocols 1.49 wurde veröffentlicht. Es enthält eine Reihe von Protokollen und Erweiterungen, die das Wayland-Kernprotokoll ergänzen und die notwendigen Funktionen zum Aufbau von zusammengesetzten Servern und Benutzerumgebungen bereitstellen.
In der neuen Version:
- Добавлен экспериментальный протокол xx-fractional-scale, предоставляющий возможность масштабирования системы логических координат, значения в которой задаются целыми числами, для повышения точности позиционирования и увеличения разрешения логических координат до отдельных пикселей. Подобная возможность решает проблему с ограниченным разрешением системы логических координат, недостаточным для позиционирования на уровне отдельных пикселей, необходимого для полноценной реализации дробного масштабирования.
- В протокол «linux-dmabuf» добавлена поддержка работы на системах с несколькими GPU. На подобных системах клиент может согласовать с композитными сервером какой из GPU следует использовать.
- В протокол color-management-v1 добавлена поддержка метаданных изображений в формате BT.2100 для применения в композитном сервере специфичных обработчиков, позволяющих корректно отображать HDR-контент, созданный для Windows.
Alle Protokolle durchlaufen nacheinander Entwicklungs-, Test- und Stabilisierungsphasen. Nach Abschluss der Entwicklungsphase (Kategorie „instabil“) wird das Protokoll in den Zweig „Staging“ gestellt und offiziell in den Wayland-Protokollsatz aufgenommen. Nach Abschluss der Tests wird es in die Kategorie „stabil“ verschoben. Protokolle aus der Kategorie „Staging“ können bereits in Verbundservern und Clients verwendet werden, bei denen entsprechende Funktionalität erforderlich ist. Anders als in der Kategorie „instabil“ ist es im „Staging“ verboten, Änderungen vorzunehmen, die gegen die Kompatibilität verstoßen. Wenn jedoch beim Testen Probleme und Mängel festgestellt werden, ist ein Ersatz durch eine neue signifikante Version des Protokolls oder eine andere Wayland-Erweiterung nicht ausgeschlossen.
Um die Bereitstellung von Protokollen für Entwickler zu beschleunigen und eine frühzeitige Implementierung von Protokollen in bestehende Projekte zu fördern, wurde beginnend mit der vorherigen Version eine „experimentelle“ Phase hinzugefügt, die Änderungen ermöglicht, die die Kompatibilität beeinträchtigen, und das Hinzufügen von „rohen“ Protokollen, die schrittweise auf das richtige Niveau gebracht werden können. Während für ein Protokoll die Bildung eines Supportteams und das Erhalten einer bestimmten Anzahl von Bestätigungen (ACKs) von Gutachtern erforderlich ist, um in die Staging-Phase einzutreten, müssen für den Eintritt in die experimentelle Phase während der zweiwöchigen Überprüfungsphase nur keine Einwände (NACKs) vorliegen.
Die Wayland-Protokollsuite umfasst derzeit die folgenden stabilen Protokolle, die abwärtskompatibel sind:
- „Viewporter“ – ermöglicht dem Client die Durchführung von Skalierungs- und Oberflächenkantentrimmaktionen auf der Serverseite.
- „presentation-time“ – stellt Videoanzeige bereit.
- „xdg-shell“ ist eine Schnittstelle zum Erstellen von und Interagieren mit Oberflächen als Fenster, die es Ihnen ermöglicht, diese auf dem Bildschirm zu verschieben, zu reduzieren, zu erweitern, ihre Größe zu ändern usw.
- „linux-dmabuf“ – bietet Funktionen zum Erstellen von wl_buffers basierend auf DMA-BUF.
- „Tablet“ – Organisation der Eingabe von Grafiktabletts.
Im „Staging“-Zweig getestete Protokolle:
- drm-lease – stellt die notwendigen Ressourcen bereit, um bei der Ausgabe an Virtual-Reality-Headsets ein Stereobild mit unterschiedlichen Puffern für das linke und rechte Auge zu erzeugen.
- „ext-session-lock“ – definiert eine Möglichkeit zum Sperren einer Sitzung, beispielsweise während der Bildschirmschoner läuft oder der Authentifizierungsdialog angezeigt wird.
- „single-pixel-buffer“ – ermöglicht die Erstellung von Einzelpixelpuffern, die vier 32-Bit-RGBA-Werte enthalten.
- «xdg-activation» — позволяет передать фокус между разными поверхностями первого уровня (например, при помощи
xdg-activation одно приложение может переключить фокус на другое). - Inhaltstyp – Ermöglicht Clients die Weitergabe von Informationen über den angezeigten Inhalt an den Verbundserver, die zur Optimierung des inhaltsbezogenen Verhaltens verwendet werden können, z. B. durch das Festlegen bestimmter DRM-Eigenschaften wie „Inhaltstyp“. Folgende Inhaltstypen werden unterstützt: Keine (keine Angaben zum Datentyp), Foto (Ausgabe digitaler Fotos, erfordert minimale Bearbeitung), Video (Video oder Animation, genauere Synchronisierung ist erforderlich, um Ruckler zu vermeiden) und Spiel (Starten). Spiele, Ausgabe ab minimaler Verzögerung).
- ext-idle-notify – Ermöglicht Verbundservern das Senden von Benachrichtigungen an Clients über Benutzerinaktivität, die zum Aktivieren zusätzlicher Energiesparmodi nach einer bestimmten Zeit der Inaktivität verwendet werden können.
- Tearing-Control – Ermöglicht die Deaktivierung der vertikalen Synchronisierung (VSync) mit einem vertikalen Dämpfungsimpuls in Vollbildanwendungen, die zum Schutz vor Tearing in der Ausgabe verwendet wird. Bei Multimedia-Anwendungen stellen Tearing-Artefakte einen unerwünschten Effekt dar, bei Gaming-Programmen können Artefakte jedoch toleriert werden, wenn der Umgang mit ihnen zu zusätzlichen Verzögerungen führt.
- ext-foreign-toplevel-list – Ruft Informationen über auf der obersten Ebene platzierte Oberflächen ab, die es Ihnen ermöglichen, Fenster so zu organisieren, dass sie an anderen Inhalten andocken, um beispielsweise Ihre eigenen Bedienfelder und Fensterschalter anzubringen.
- Sicherheitskontext – ermöglicht die Identifizierung von Clients mithilfe der Sandbox-Isolation. Ein Client kann eine neue Verbindung zu einem Wayland-basierten Verbundserver registrieren und diesem einen Sicherheitskontext hinzufügen. Anschließend schränkt der Verbundmanager die für die hergestellte Verbindung verfügbaren Funktionen basierend auf dem angegebenen Sicherheitskontext ein.
- Cursorform ist eine alternative Möglichkeit, das Erscheinungsbild des Cursors anzupassen, indem eine Reihe von Cursorbildern übergeben werden, anstatt an einer Oberfläche (wl_surface) einzurasten.
- „ext-transient-seat“ – Entwickelt, um temporäre unabhängige Sitzungen (Sitze) zu erstellen, die für die Verwendung mit virtuellen Eingabegeräten konzipiert sind. Wenn Sie beispielsweise die Möglichkeit implementieren, eine Verbindung zu einem Remote-Desktop herzustellen, können Sie mit dem Protokoll für jeden Benutzer eine separate Sitzung mit einer virtuellen Tastatur und Maus erstellen.
- „xdg-toplevel-drag“ – erweitert den „Drag & Drop“-Mechanismus um die Möglichkeit, Fenster der obersten Ebene an einen Drag-Vorgang anzuhängen, der beispielsweise zum Organisieren des Ziehens von Symbolleisten oder Browser-Tabs mit der Maus verwendet werden kann. Mit dem neuen Protokoll können Sie abnehmbare Teile eines Fensters erstellen, die beim Ziehen aus diesem Fenster zu neuen Fenstern werden und über das vorhandene Fenster verschoben werden können, bevor sie wieder angefügt werden.
- „xdg-dialog“ – ermöglicht Ihnen die Zuweisung von dialogspezifischen Attributen zu Oberflächen der obersten Ebene. Sie können beispielsweise modale Dialoge erstellen, die die Benutzerinteraktion mit dem Rest der Benutzeroberfläche blockieren.
- „linux-drm-syncobj“ – bietet Tools für die explizite Puffersynchronisierung mithilfe von DRM-Synchronisierungsobjekten (Direct Rendering Manager). Es wird davon ausgegangen, dass das vorgeschlagene Protokoll im Kontext der Synchronisierung beim Rendern in einen Puffer die Arbeit mit Treibern verbessert, die auf den Grafik-APIs von Vulkan und OpenGL basieren (die Implementierung basiert auf Handlern in den Treibern). Das neue Protokoll ermöglicht es sicherzustellen, dass ein Zeichenvorgang in einen Puffer abgeschlossen ist, bevor der Compositing-Manager diesen Puffer anzeigt.
- Alpha-Modifikator, der es Clients ermöglicht, den Grad der Transparenz der Oberfläche zu ändern und Vorgänge zur Gewährleistung der Transparenz auf die Seite des Verbundservers zu übertragen, der diese Vorgänge wiederum an KMS umleiten kann.
- xdg-toplevel-icon – bindet das Symbol an das Fenster der obersten Ebene.
- ext-image-capture-source und ext-image-copy-capture – Organisation der Erfassung des auf dem Bildschirm angezeigten Inhalts.
- xdg-system-bell – ermöglicht die Ausgabe eines Systemsignals, das beispielsweise als Warnung in einem Terminalemulator verwendet werden kann. Die Form der Signalausgabe liegt im Ermessen des Composite-Managers; es kann nicht nur eine akustische, sondern auch eine visuelle Reaktion sein.
- fifo – implementiert einen FIFO-Mechanismus (First In, First Out) zur Verarbeitung der Inhaltsaktualisierungswarteschlange der angezeigten Oberfläche. Auf der praktischen Seite ermöglicht das Protokoll, dass bei der Ausgabe auf den Abschluss des vertikalen Scans (vblank) gewartet wird, anstatt jedes Mal Rückrufaufrufe zu verwenden, wenn ein neuer Frame angezeigt werden soll. Dadurch wird das Problem der hohen GPU-Last bei Verwendung von VSync gelöst.
- commit-timing – ermöglicht es Ihnen, ein Zeitlimit an den Oberflächeninhalt zu binden (der Verbundserver sollte die Inhaltsänderung nach Möglichkeit nach der angegebenen Zeit widerspiegeln, jedoch nicht früher).
- ext-data-control – Ermöglicht privilegierten Clients die Steuerung der Datenverarbeitung, beispielsweise um Zwischenablage-Manager zu implementieren.
- ext-workspace – implementiert das Konzept virtueller Desktops und bietet Ereignisse mit Informationen über den Status von Desktops sowie Möglichkeiten zum Aktivieren und Deaktivieren von Desktops. Mit dem Protokoll können Panels und Indikatoren erstellt werden, die eine Liste der verfügbaren virtuellen Desktops anzeigen und es Ihnen ermöglichen, zwischen ihnen zu wechseln.
- Farbmanagement – bietet Funktionen für das Farbmanagement und Unterstützung für einen erweiterten dynamischen Helligkeitsbereich (HDR, High Dynamic Range). Mit der hinzugefügten Erweiterung können Clientanwendungen Informationen zu den farbbezogenen Eigenschaften von Ausgabegeräten abrufen und Daten zu den farbbezogenen Eigenschaften ihrer eigenen Inhalte an den Composite-Server weitergeben. In einem Composite-Server können diese Informationen verwendet werden, um die Farbe bei der Anzeige von Inhalten auf verschiedenen Ausgabegeräten automatisch zu verwalten, beispielsweise um Inhalte in eine für die Anzeige auf HDR-Monitoren geeignete Präsentation zu konvertieren. Zur Beschreibung von Farbräumen werden ICC-Profile verwendet.
- xdg-toplevel-tag – Ermöglicht Wayland-Clients, Tags an Oberflächen der obersten Ebene anzuhängen, die der Compositing-Server verwenden kann, um Fenster nach dem Neustart der Anwendung zu identifizieren (beispielsweise könnte eine Anwendung die Tags „Hauptfenster“ und „Einstellungen“ für das Hauptfenster und das Einstellungsfenster festlegen). Eine solche Identifizierung ist nützlich, um die Position, Größe und Eigenschaften von Fenstern nach einem Neustart wiederherzustellen und um spezielle Regeln für einzelne Fenstertypen zu definieren.
- Farbdarstellung – definiert die Farbdarstellung der Wayland-Oberfläche. Wayland-Clients können Metadaten übergeben, die zur Definition von Transparenz, Farbmodell, Unterabtastung und Quantisierungsbereich erforderlich sind und bei der Konvertierung eines Puffers mit Daten, die dem YCbCr-Farbmodell entsprechen, in eine RGB-Darstellung verwendet werden.
- ext-background-effect – wendet Effekte auf halbtransparente Teile einer Wayland-Oberfläche an, wie z. B. Hintergrundunschärfe.
- Zeiger-Warp – Ermöglicht einer Anwendung, den Zeiger sofort an eine angegebene Position zu bewegen.
- xdg-session-management — возможности для восстановления состояния и позиции окон прерванного сеанса, например, после аварийного завершения композитного сервера или приложения.
Im experimentellen Zweig werden folgende Protokolle entwickelt:
- xx-session-management – stellt den Windows-Status für unterbrochene Sitzungen wieder her (z. B. nach einem Absturz des Composite Managers).
- xx-input-method — ermöglicht es Anwendungen, Texteingabemethoden für zusammengesetzte Server zu implementieren und eingegebenen Text zu generieren, der beispielsweise zur Erstellung virtueller Tastaturen und IME-Schichten (Input Method Editor) für die Eingabeverarbeitung verwendet werden kann.
- xx-text-input ermöglicht es Composite-Servern, Eingabemethoden zu implementieren und Text an Anwendungen zu senden. Das Protokoll standardisiert die Interaktion zwischen Composite-Servern und Anwendungen und erlaubt die Steuerung von Funktionen wie der Übertragung von Eingabetext, der Behandlung von Fokusereignissen und der Berücksichtigung von Eingabefeldspezifika (Sprache, Textauswahl, Inhaltstyp).
- xx-cutouts — для получения информации о вырезах на экране (например, области под фронтальную камеру на экране смартфона).
- xx-zones — для создания и добавления окон верхнего уровня в «зоны» — окружения со своим пространством координат. Протокол позволяет организовать логическую расстановку окон, в которой каждое окно размещается относительно другого окна.
- xx-keyboard-filter — для перехвата клиентом выбранных событий клавиатуры, изменения событий ввода или блокирования передачи определённых событий в Wayland-поверхность, на которой установлен фокус ввода.
Protokolle, die im „instabilen“ Zweig entwickelt werden:
- „fullscreen-shell“ – Kontrolle der Arbeit im Vollbildmodus.
- „Eingabemethode“ – Eingabemethoden verarbeiten.
- „idle-inhibit“ – Blockieren des Starts des Bildschirmschoners (Bildschirmschoner).
- „input-timestamps“ – Zeitstempel für Eingabeereignisse.
- „keyboard-shortcuts-inhibit“ – steuert das Anhängen von Tastaturkürzeln und Hotkeys.
- "linux-explicit-synchronization" ist spezifisch für Linux Mechanismus zur Synchronisierung von Puffern in Bezug auf die Oberfläche.
- „Zeigergesten“ – Steuerung über Touchscreens.
- „Zeigerbeschränkungen“ – Zeigerbeschränkungen (Blockierung).
- „Primärauswahl“ – stellt analog zu X11 den Betrieb der primären Zwischenablage (Primärauswahl) sicher, aus der Informationen normalerweise mit der mittleren Maustaste eingefügt werden.
- „relative Zeigerereignisse“ – relative Zeigerereignisse.
- „text-input“ – Organisation der Texteingabe.
- „xdg-foreign“ ist eine Schnittstelle zur Interaktion mit den Oberflächen des „benachbarten“ Clients.
- „xdg-decoration“ – Rendern von Fensterdekorationen auf der Serverseite.
- „xdg-output“ – zusätzliche Informationen zur Videoausgabe (wird für die fraktionale Skalierung verwendet).
- „xwayland-keyboard-grab“ – Eingaben in XWayland-Anwendungen erfassen.
Source: opennet.ru
