AprÚs 13 mois de développement, une version stable du protocole, du mécanisme d'interaction entre processus et des bibliothÚques Wayland 1.24 est présentée. La branche 1.24 est rétrocompatible au niveau API et ABI avec les versions 1.x et contient principalement des corrections de bogues et des mises à jour mineures du protocole. Les développements du projet sont sous licence MIT. Le serveur composite de référence Weston, qui fournit le code et des exemples fonctionnels pour l'utilisation de Wayland dans des environnements de bureau et des solutions intégrées, progresse dans le cadre d'un cycle de développement distinct.
Les principales modifications du protocole :
- L'interface wl_fixes a Ă©tĂ© mise en Ćuvre pour rĂ©soudre les problĂšmes avec d'autres interfaces logicielles des protocoles de base qui ne peuvent pas ĂȘtre rĂ©solus par leurs propres capacitĂ©s. Par exemple, la requĂȘte « wl_fixes::destroy_registry » permet de supprimer l'objet wl_registry, ce qui fait que le client ne pourra plus l'utiliser, et le serveur composite cessera de transmettre des Ă©vĂ©nements Ă travers celui-ci.
- Dans l'interface wl_keyboard::key, un pseudo-Ă©tat « repeated » a Ă©tĂ© ajoutĂ©, signifiant que la touche est enfoncĂ©e. Une touche peut ĂȘtre mise dans l'Ă©tat « repeated » uniquement aprĂšs ĂȘtre passĂ©e dans l'Ă©tat « pressed », mais avant d'atteindre l'Ă©tat « released ». Les Ă©vĂ©nements associĂ©s Ă ce nouvel Ă©tat peuvent ĂȘtre gĂ©nĂ©rĂ©s plusieurs fois tant que la touche est enfoncĂ©e. Ce changement permet aux serveurs composites de traiter les rĂ©pĂ©titions des appuis sur les touches comme des Ă©tats distincts, et non simplement comme un flux d'Ă©vĂ©nements d'appui rĂ©pĂ©tĂ©s (« pressed »), ce qui peut ĂȘtre utile pour gĂ©rer le travail avec un bureau distant.
- Les fonctions wl_display_dispatch_queue_timeout() et wl_display_dispatch_timeout() ont été ajoutées pour la gestion des événements dans la file d'attente en tenant compte du délai d'attente (les fonctions wl_display_dispatch et wl_display_dispatch_queue retournent 0 uniquement en l'absence d'événements, tandis que les variantes *_timeout le font également à l'expiration du délai d'attente).
- Les fonctions wl_shm_buffer_ref() et wl_shm_buffer_unref() ont été ajoutées pour l'accÚs à la mémoire partagée associée au buffer wl_shm_buffer, aprÚs sa suppression (par exemple, lorsque le client se termine). Ces fonctions permettent de dissocier le buffer wl_shm_buffer de la durée de vie de la ressource principale wl_buffer, lorsque le serveur composite doit retarder le passage à un nouvel état.
- Ajout des fonctions wl_proxy_get_interface() et wl_resource_get_interface(), renvoyant wl_interface pour la ressource spécifiée, ce qui est demandé dans les liaisons pour les langages à typage dynamique.
- Ajout de la fonction wl_resource_post_error_vargs(), qui sert d'alternative à la fonction wl_resource_post_error() avec la possibilité de transmettre une liste d'arguments pour le formatage de chaßne (va_list).
Les événements les plus marquants liés à Wayland qui se sont produits depuis la publication du précédent numéro :
- Amélioration du support de Wayland dans les pilotes propriétaires NVIDIA.
- KDE prévoit de conserver uniquement le support de Wayland. Séparation du code kwin_x11 et kwin_wayland.
- Ubuntu et Kubuntu ne garderont que le support de session Wayland dans GNOME et KDE.
- Dans GDM, le support de Wayland a été laissé par défaut.
- GTK a classé le backend X11 comme obsolÚte.
- Dans Fedora 43, il a été décidé de supprimer du dépÎt les paquets utilisés dans GNOME pour fonctionner au-dessus du serveur X. Tous les utilisateurs de GNOME avec X11 seront contraints de passer à une session basée sur Wayland.
- Dans l'environnement de bureau Budgie, seul le support de Wayland sera maintenu.
- Dans Xfce 4.20, un support partiel de Wayland a été implémenté.
- MATE 1.28 avec un support expérimental de Wayland.
- Wayback â serveur composite Wayland pour exĂ©cuter des environnements de bureau basĂ©s sur X11.
- La société Valve a lancé le projet Frog pour accélérer la promotion de nouveaux protocoles Wayland.
- La bibliothĂšque de construction d'interfaces graphiques Cosmoe, utilisant Wayland et une API de style BeOS.
- Activation par défaut du pilote Wayland dans Wine.
- Migration de Raspberry Pi OS vers l'utilisation de Wayland.
- Publication de la boĂźte Ă outils graphiques FLTK 1.4.0 avec support de Wayland.
- Un ajout Ă Wayland-Protocols consiste en une phase supplĂ©mentaire de promotion des protocoles â «experimental», visant Ă abaisser la barriĂšre Ă l'intĂ©gration des protocoles, Ă accĂ©lĂ©rer leur mise Ă disposition aux dĂ©veloppeurs et Ă encourager leur mise en Ćuvre prĂ©coce dans les projets existants.
- AMD développe son propre serveur composite ACS utilisant Wayland.
- Sept versions alpha de l'environnement de bureau COSMIC.
- Mise Ă jour des serveurs composites : Weston 14.0, Niri 25.05, Wayland Maker 0.5, miracle-wm 0.5, Hyprland 0.49, labwc 0.8.3, Cage 0.2, Wayfire 0.9, Sway 1.11.
Extensions de protocoles ajoutées au cours de l'année derniÚre, complétant le protocole de base Wayland et fournies dans un ensemble distinct Wayland-Protocols :
- color-management â fonctionnalitĂ©s pour la gestion des couleurs et le support de la plage dynamique Ă©tendue (HDR, High Dynamic Range).
- color-representation-v1 â dĂ©finition de la reprĂ©sentation des couleurs de la surface Wayland.
- xdg-toplevel-tag â permet aux clients Wayland d'attacher des Ă©tiquettes aux surfaces de niveau supĂ©rieur, que le serveur de composition peut utiliser pour identifier les fenĂȘtres aprĂšs le redĂ©marrage de l'application.
- ext-background-effect â application d'effets aux parties semi-transparentes d'une surface Wayland, telles que le flou d'arriĂšre-plan.
- pointer-warp â permet Ă l'application de dĂ©placer instantanĂ©ment le pointeur Ă une position spĂ©cifiĂ©e.
- xx-session-management â restauration de l'Ă©tat des fenĂȘtres pour des sessions interrompues (par exemple, aprĂšs un plantage du gestionnaire composite).
- xx-input-method â dĂ©veloppement d'un nouveau protocole pour utiliser des mĂ©thodes de saisie de texte. ext-data-control â permet aux clients privilĂ©giĂ©s de contrĂŽler le traitement des donnĂ©es, par exemple pour mettre en Ćuvre des gestionnaires de presse-papiers.
- ext-workspace â met en Ćuvre le concept des bureaux virtuels et propose des Ă©vĂ©nements contenant des informations sur l'Ă©tat des bureaux, ainsi que des capacitĂ©s pour activer et dĂ©sactiver des bureaux.
- xdg-system-bell â permet d'Ă©mettre un signal systĂšme, qui peut ĂȘtre utilisĂ©, par exemple, comme alerte dans des Ă©mulateurs de terminaux.
- xdg-toplevel-icon â pour lier une icĂŽne Ă une fenĂȘtre de niveau supĂ©rieur.
- ext-image-capture-source et ext-image-copy-capture â capture du contenu affichĂ© Ă l'Ă©cran.
- fifo â implĂ©mente un mĂ©canisme FIFO (premier arrivĂ©, premier servi) pour le traitement des mises Ă jour du contenu de la surface affichĂ©e.
- commit-timing â permet d'associer une limite de temps au contenu d'une surface (le serveur composite doit afficher la modification du contenu dans la mesure du possible aprĂšs le temps indiquĂ©, mais pas avant).
Rappelons que Wayland est un protocole d'interaction entre un serveur de composition et les applications qui lui sont associĂ©es. Les clients rĂ©alisent eux-mĂȘmes le rendu de leurs fenĂȘtres dans un tampon sĂ©parĂ©, transmettant des informations sur les mises Ă jour au serveur de composition, qui combine le contenu des tampons des diffĂ©rentes applications pour former la sortie finale, en tenant compte des subtilitĂ©s possibles, telles que le chevauchement des fenĂȘtres et la transparence. En d'autres termes, le serveur de composition ne fournit pas d'API pour le rendu d'Ă©lĂ©ments individuels, mais opĂšre uniquement sur des fenĂȘtres dĂ©jĂ formĂ©es, ce qui permet d'Ă©viter le double buffering lors de l'utilisation de bibliothĂšques de haut niveau telles que GTK et Qt, qui prennent en charge la composition du contenu des fenĂȘtres.
Wayland rĂ©sout de nombreux problĂšmes de sĂ©curitĂ© liĂ©s Ă X11, car contrairement Ă ce dernier, il isole les entrĂ©es et sorties pour chaque fenĂȘtre, n'autorise pas un client Ă accĂ©der au contenu des fenĂȘtres d'autres clients, et empĂȘche la capture d'Ă©vĂ©nements d'entrĂ©e liĂ©s Ă d'autres fenĂȘtres. Le support du travail direct avec Wayland a Ă©tĂ© intĂ©grĂ© pour la plupart des bibliothĂšques graphiques utilisĂ©es dans Linux, y compris GTK, Qt, SDL, FLTK, wxWidgets, Clutter et EFL (Enlightenment Foundation Library).
L'interaction avec le matériel sous Wayland/Weston, par exemple, l'initialisation, le changement de modes vidéo (drm modesetting) et la gestion de la mémoire (GEM pour i915 et TTM pour radeon et nouveau) des cartes graphiques, peut se faire directement via un module fonctionnant au niveau du noyau, ce qui permet de se passer de privilÚges superutilisateur. Pour permettre l'exécution d'applications X11 standard dans un environnement basé sur Wayland, un composant DDX appelé XWayland (Device-Dependent X), similaire à Xwin et Xquartz pour les plateformes Win32 et macOS, est utilisé.


Source : opennet.ru
