Das Paket wayland-protocols 1.42 wurde veröffentlicht und enthält eine Reihe von Protokollen und Erweiterungen, die das Basisprotokoll Wayland ergänzen und die für den Aufbau zusammengesetzter Server und Benutzerumgebungen erforderlichen Funktionen bereitstellen.
Wayland-Protocols 1.42 führt eine neue Version des „Cursor-Shape“-Protokolls ein, das die Möglichkeiten zur Gestaltung des Cursor-Erscheinungsbilds erweitert und Unterstützung für Cursor-Formen mit Indikatoren für den Informationsempfang (Fragezeichen) und Größenänderungen hinzufügt. Die Version des „Tablet“-Protokolls wurde ebenfalls aktualisiert und bietet Möglichkeiten zur Organisation der Eingabe von Grafiktabletts. Die neue Version des Tablet-Protokolls fügt Unterstützung für „Bustyp“-Ereignisse hinzu und implementiert die Möglichkeit, Ereignisse von Drehreglern mit der Übertragung relativer Änderungen zu verarbeiten, ähnlich der Verarbeitung der Mausradbewegung.
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“ – ermöglicht es Ihnen, den Fokus zwischen verschiedenen Oberflächen der ersten Ebene zu übertragen (mit xdg-activation kann beispielsweise eine Anwendung den Fokus auf eine andere wechseln).
- 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 virtuelle Desktops Es bietet außerdem Informationen zum Status von Desktops sowie die Möglichkeit, Desktops zu aktivieren und zu deaktivieren. Das Protokoll kann verwendet werden, um Dashboards und Indikatoren zu erstellen, die eine Liste der verfügbaren virtuellen Desktops anzeigen und das Umschalten zwischen ihnen ermöglichen.
- Farbmanagement – bietet Funktionen für das Farbmanagement und die Unterstützung von High Dynamic Range (HDR). Diese Erweiterung ermöglicht es Clientanwendungen, Informationen über die farbbezogenen Eigenschaften von Ausgabegeräten zu erhalten und Daten über die Farbeigenschaften ihrer eigenen Inhalte an den Composite-Server zu übermitteln. Im Composite-Modus Server Diese Informationen können für das automatische Farbmanagement bei der Anzeige von Inhalten auf verschiedenen Ausgabegeräten verwendet werden, beispielsweise um Inhalte in eine für HDR-Monitore geeignete Darstellung zu konvertieren. ICC-Profile dienen zur Beschreibung von Farbräumen.
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
