LibX11 Compat Takes A Completely Different Approach To Xwayland

La vidéo explore les nouvelles approches pour faire tourner des applications X11 sur Wayland, en mettant en lumière libX11-compat, une bibliothèque qui exécute Xlib directement dans un conteneur SDL natif Wayland, sans serveur X.

Voir la source

SYNTHÈSE STRUCTURÉE

Contexte : l’écosystème X11 en pleine effervescence

L’intervenant commence par dresser un panorama des projets récents dans le monde X11 : Xlibree (fork du serveur Xorg), Phoenix (serveur X11 en Zig), WayServer (serveur X11 en Rust) et Frame (serveur X11 en Assembly). Il précise que les deux derniers utilisent l’IA, ce qui peut être un critère de choix pour certains. Il souligne aussi que ces projets montrent que X11 n’est pas mort, mais en pleine mutation.

XWayland et ses alternatives

XWayland reste la solution dominante pour exécuter des applications X11 sur Wayland. Il intègre le serveur Xorg dans l’environnement Wayland (KDE, GNOME, Hyprland, etc.). Cependant, certains environnements comme Niri choisissent de ne pas le supporter et s’appuient sur XWayland Satellite, une implémentation externe. L’intervenant prédit que cette approche va se généraliser : « C’est la direction que je m’attends à voir prendre beaucoup de nouveaux environnements qui ne veulent pas gérer la complexité de XWayland. »

Wayback : faire tourner des bureaux X11 entiers

WayBack est un projet qui permet d’exécuter un bureau X11 complet (comme Trinity ou AwesomeWM) via XWayland. L’intervenant le compare à Zinc (OpenGL sur Vulkan), mais précise que contrairement à Zinc, Wayback n’apporte pas de gain de performance : « C’est essentiellement reprendre une technologie existante et la rendre plus pratique à utiliser. »

libX11-compat : une approche radicalement différente

Le projet principal de la vidéo, libX11-compat, est une implémentation in-process de la bibliothèque client Xlib, posée sur SDL. Concrètement, les appels Xlib sont traduits en appels SDL, qui créent des fenêtres Wayland natives. Il n’y a pas de serveur X du tout. L’intervenant insiste : « Ce n’est pas une réimplémentation du protocole X11 et cela ne remplace pas un vrai serveur X. » L’objectif est de garder du code Xlib legacy compilable et exécutable pendant une migration vers un autre toolkit.

Cas d’usage concrets

La bibliothèque cible des environnements où un serveur X est indisponible ou peu pratique : macOS sans XQuartz, sessions Wayland-only, CI headless, ou applications Android avec leur propre intégration SDL. L’intervenant note que c’est un créneau très étroit, mais qu’il trouve l’idée « vraiment cool ».

Les ports de validation : Motif et ses démos

Le projet inclut des ports de validation, notamment Motif (la bibliothèque qui a inspiré CDE et KDE). Les menus, les grabs de pointeur, les changements de focus, le rendu texte et les lookups de ressources fonctionnent. Le chemin OpenGL via GLX sur EGL fonctionne aussi, comme le montre la démo du « paper plane » : « Des menus Motif vivants et une scène 3D animée rendus ensemble, sans serveur X et sans driver GL desktop. »

Les anciens navigateurs : www et Mosaic

Deux navigateurs historiques sont portés : www (1992, Motif) et une fork de Mosaic (1993). Ils chargent des pages HTTP, affichent des images XPM et gèrent le scroll et le redimensionnement. L’intervenant prévient : « C’est un navigateur de 1992. N’attendez pas que le web moderne fonctionne dessus. » Les limitations (HTTPS, HTML complexe) sont celles de l’application, pas de la couche de compatibilité.

Osiris et le maintien de KDE 1

Osiris est une fork de Qt 2.3.2, maintenue pour porter KDE 1 vers Qt 2 et bénéficier de la molette de souris. Ce port valide la gestion des widgets empilés, des menus pop-up, des métriques de police et de la boucle d’événements. L’intervenant s’amuse : « Pourquoi pas ? » C’est un exemple de ce que permet la compatibilité : garder des logiciels anciens vivants.

GIMP 0.54 et XMMS : des workloads exigeants

GIMP 0.54 (1996) fonctionne via le stack de compatibilité, avec des chemins d’accès MIT-SHM, des visuals 32 BPP et des plugins forkés. XMMS 1.2.x, le lecteur audio GTK1, utilise l’extension Shape pour ses fenêtres non rectangulaires (skin Winamp). L’intervenant détaille : « Le masque de bounding route les événements pointeur et focus uniquement sur les pixels visuels, et laisse les clics passer à travers les coins transparents. »

Micropolis : le moteur de SimCity

Micropolis (la version GPL de SimCity) est porté avec Tcl/Tk, en embarquant une copie privée de Tk. Il exerce le chemin MIT-SHM avec XShmPutImage pour le rendu de la carte. L’intervenant souligne que ces ports ne remplacent pas une installation X11 native, mais qu’ils « gardent des clients X11 legacy compilables et exécutables sur des plateformes sans serveur X. »

Limites et bugs attendus

L’intervenant est réaliste : « Je ne doute absolument pas que des petits trucs vont casser. » Beaucoup d’applications X11 s’appuient sur des comportements implicites du serveur X. Même XWayland, pourtant un vrai serveur X, fait casser certaines applications. libX11-compat est une couche de plus, donc des artefacts de rendu ou des différences de comportement sont inévitables.

Contribution et avenir du projet

Le projet est ouvert aux contributions via GitHub, avec des issues pour les widgets mal rendus, les crashes Motif, ou les différences de rendu XDraw. L’intervenant conclut : « L’objectif final n’est pas d’être une couche de compatibilité infinie, mais elle peut le devenir, et pour moi c’est vraiment cool. » Il encourage à tester et à signaler les problèmes.

CONCEPTS CLÉS

  • Xlib : bibliothèque client historique du protocole X11, utilisée par d’innombrables applications.
  • SDL (Simple DirectMedia Layer) : bibliothèque multimédia portable, utilisée pour les jeux et le rendu graphique.
  • XWayland : serveur X intégré à Wayland pour exécuter des applications X11.
  • XWayland Satellite : implémentation externe de XWayland, utilisée par des environnements comme Niri.
  • WayBack : projet permettant d’exécuter des bureaux X11 complets via XWayland.
  • MIT-SHM : extension X11 pour le partage de mémoire entre client et serveur, utilisée pour les images volumineuses.
  • Shape extension : extension X11 permettant de définir des formes non rectangulaires pour les fenêtres.

CONCLUSION

libX11-compat est une approche audacieuse et originale pour migrer des applications X11 vers Wayland sans serveur X. Elle ne remplace pas XWayland, mais offre une alternative pour des cas spécifiques (macOS, CI, Android). L’intervenant résume bien l’esprit du projet : « Ce n’est pas pour tout le monde, mais c’est une idée que quelqu’un essaie, et c’est génial. » Pour un administrateur système, c’est un outil à surveiller, surtout si vous devez maintenir des applications legacy sur des plateformes modernes.

Du même canal

Tout voir