Finally I Have One Less Problem On Wayland
Cette vidéo détaille le problème persistant des Browser Docks (fenêtres de navigateur intégrées) dans OBS sous Wayland, un bug vieux de plusieurs années causé par un manque de support dans le framework CEF (Chromium Embedded Framework), et dont la résolution complète est encor...

SYNTHÈSE STRUCTURÉE
Le problème : Browser Docks transparents sous Wayland
Depuis le passage à Wayland, l’intervenant rencontre un bug où les Browser Docks d’OBS (fenêtres intégrant du contenu web comme le chat Twitch ou Spotify) s’affichent vides ou transparents. « Custom Browser Dock window under Wayland is transparent » résume l’issue ouverte en 2021. Le rendu est absent, seul le cadre de la fenêtre est visible. Ce n’est pas un problème de capture d’écran, qui fonctionne correctement.
Pourquoi la fonctionnalité a été désactivée temporairement
Face à l’impossibilité de corriger rapidement le bug, un PR a été créé pour désactiver les Browser Docks sur Wayland. L’intervenant explique : « This was not being done because the feature shouldn’t work. This was being done as a temporary thing, so they don’t keep getting reports of the feature being broken. » L’objectif était de réduire les signalements et de rediriger les utilisateurs vers le PR en cours.
La cause racine : CEF (Chromium Embedded Framework)
Le problème ne vient pas d’OBS lui-même, mais de sa dépendance CEF, qui permet d’intégrer un navigateur Chromium dans des applications. Sous X11, CEF fonctionne parfaitement ; sous Wayland, le rendu est cassé. Un mainteneur d’OBS précise : « As mentioned several times, this is an upstream issue. We’re actively monitoring CEF updates, and we update as soon as we can. » La mise à jour de CEF n’est pas triviale : elle implique des changements profonds dans Chromium.
Pourquoi ne pas utiliser Qt WebEngine ?
Une question légitime : OBS étant une application Qt, pourquoi ne pas utiliser Qt WebEngine, qui fonctionne sous Wayland ? La réponse est technique : « Qt web engine doesn’t offer us anything over the existing implementation, and is missing core functionality that we have patched into CEF, OSR, hardware acceleration, shared textures, audio routing. » Qt WebEngine manque de fonctionnalités clés comme le rendu hors écran (OSR) ou l’accélération matérielle, et nécessiterait une réécriture massive.
Le défi technique : intégration Ozone/Wayland dans CEF
Le support Wayland dans CEF nécessite des changements architecturaux dans Chromium. Un développeur explique : « Ozone/Wayland/X11 can only be used with views framework now, but it is not allowed to embed host windows into client windows. » Contrairement à X11, Wayland ne permet pas d’emboîter facilement des fenêtres natives dans d’autres fenêtres. Le mode OSR (Off-Screen Rendering) pourrait contourner ce problème, mais il n’est pas encore adapté.
Un workaround : lancer OBS via XWayland
En attendant une correction, une solution de contournement existe : lancer OBS sous XWayland. L’intervenant précise : « you just launch OBS through XWayland, and when it’s launched through XWayland, the X11 windows now work fine. » Cependant, ce workaround a des limites : il casse certains plugins (comme OBS VK Capture avec NVIDIA) et n’est pas supporté officiellement par le projet. Les bugs doivent être reproduits sous X11 pur pour être pris en compte.
Une avancée majeure : support Wayland dans Chromium
En janvier 2025, un contributeur annonce une percée : « We are able to run CEF on Flutter plus Wayland, but not without a patch to Chromium. » Le problème principal était une dépendance à Angle (couche de compatibilité OpenGL), qui ne supportait pas Wayland. Un correctif a été proposé et finalement fusionné dans Chromium. L’intervenant s’enthousiasme : « Wayland support has been merged into Chromium. »
Ce qui reste à faire : fenêtrage et intégration
Malgré cette avancée, le problème n’est pas résolu. Le contributeur précise : « This is a rendering layer change. We also need to concern ourselves with the windowing and embedding. » Les défis restants incluent :
- L’impossibilité de passer un
wl_displayexistant à Ozone. - La création de fenêtres Wayland en tant que sous-surfaces d’une surface externe.
- L’absence de mécanisme pour intégrer des fenêtres Chromium dans des fenêtres hôtes.
Le chemin restant : de Chromium à OBS
Même une fois CEF mis à jour avec le support Wayland, OBS devra intégrer cette nouvelle version et adapter son code. L’intervenant estime un délai de « six months or a year away » avant une solution complète. En attendant, le bug reste ouvert, mais la fondation technique est posée.
CONCEPTS CLÉS
- CEF (Chromium Embedded Framework) : Framework permettant d’intégrer un navigateur Chromium dans des applications. Utilisé par OBS pour les Browser Docks.
- Ozone/Wayland : Abstraction graphique de Chromium pour le rendu sous Wayland. Le support natif est récent et encore incomplet pour l’intégration de fenêtres.
- Angle : Couche de compatibilité OpenGL multiplateforme. Le support Wayland a été ajouté récemment, débloquant le rendu Chromium sous Wayland.
- XWayland : Couche de compatibilité permettant d’exécuter des applications X11 sous Wayland. Utilisé comme workaround temporaire.
- OSR (Off-Screen Rendering) : Mode de rendu où le contenu est dessiné en mémoire, sans fenêtre native. Potentiellement une solution pour contourner les limitations d’intégration Wayland.
CONCLUSION
Le bug des Browser Docks sous Wayland illustre la complexité des dépendances logicielles dans l’écosystème Linux. Bien que le support Wayland ait été fusionné dans Chromium, la route est encore longue avant qu’OBS puisse en bénéficier. Ce cas montre que les problèmes « simples » d’affichage cachent souvent des défis architecturaux profonds, et que la patience est de mise pour les utilisateurs de technologies de niche. En attendant, le workaround XWayland reste une option, mais avec ses propres compromis.