Enregistrer l’écran sous Wayland avec OBS Studio et PipeWire

Une source « Screen Capture (PipeWire) » affichée en noir, et dans le journal d’OBS Studio la ligne warning: [pipewire] Failed to start screencast, denied or cancelled by user. Sous Wayland, OBS Studio ne lit pas l’écran : il le demande au portail xdg-desktop-portal, qui interroge le backend du bureau, puis reçoit les images par PipeWire. L’écran noir vient presque toujours du portail, pas d’OBS. Les versions de référence de cette page sont celles de Debian 13 trixie, avec obs-studio 30.2.3, xdg-desktop-portal 1.20.3 et pipewire 1.4.2.
Sommaire
- OBS Studio ne lit pas l’écran sous Wayland, il le demande au portail
- La procédure en cinq étapes, de la session au fichier relu
- « Failed to start screencast, denied or cancelled by user » accuse l’utilisateur, pas la cause
- Un ancien journal ne dit pas ce qu’écrit un journal actuel
- Sous wlroots, le portail prend le premier écran si aucun sélecteur n’est installé
- Quelle version pour quelle distribution
- Questions fréquentes
OBS Studio ne lit pas l’écran sous Wayland, il le demande au portail
Wayland interdit à un client de lire le contenu d’une autre fenêtre. Le Wiki Arch l’écrit ainsi : sous Wayland, le partage d’écran passe par le portail XDG Desktop et PipeWire, et OBS Studio utilise cette méthode depuis sa version 27. Sous X11, le plugin linux-capture, décrit comme le « Linux XShm capture plugin » dans son propre README, lit l’écran directement ; sous Wayland, ce rôle revient au plugin linux-pipewire, qui n’a aucun accès direct à l’écran.
Ce plugin ouvre une connexion D-Bus sur le service org.freedesktop.portal.Desktop, l’objet /org/freedesktop/portal/desktop et l’interface org.freedesktop.portal.ScreenCast. Il lit la propriété AvailableSourceTypes, dont les bits documentés valent 1 pour un écran, 2 pour une fenêtre et 4 pour un écran virtuel, puis demande les deux premiers avec l’option multiple à faux : une seule source, un écran ou une fenêtre.
Si cette propriété vaut zéro, OBS Studio écrit [pipewire] No capture sources available et n’enregistre même pas la source « Screen Capture (PipeWire) » : elle n’apparaît pas dans la liste. Une source absente est donc un diagnostic, pas un caprice de l’interface. Son identifiant interne, visible dans les journaux, est pipewire-screen-capture-source, et les deux anciennes sources séparées, pipewire-desktop-capture-source et pipewire-window-capture-source, sont marquées obsolètes dans le code actuel.
La procédure en cinq étapes, de la session au fichier relu
-
Vérifier que la session est en Wayland et que le portail répond.
echo $XDG_SESSION_TYPE echo $WAYLAND_DISPLAY echo $XDG_CURRENT_DESKTOP systemctl --user status xdg-desktop-portal busctl --user get-property org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.ScreenCast version ls /usr/share/xdg-desktop-portal/portals/À l’écran :
waylandpour la première variable, une valeur commençant parwayland-pour la deuxième, puis le nom du bureau. Le portail doit êtreactive (running). La commandebusctlrenvoie un entier, par exempleu 4: à partir de la version 4 de cette interface, OBS Studio sait mémoriser l’autorisation au lieu de la redemander à chaque lancement. Une erreurUnknown interfacesignifie que le portail installé ne sait pas capturer l’écran. La dernière commande liste les fichiers.portaldes backends présents. -
Installer OBS Studio et le backend du portail correspondant au bureau. Le paquet de base n’en fournit aucun.
apt policy obs-studio sudo apt install obs-studio sudo apt install xdg-desktop-portal-gnomeRemplacer
xdg-desktop-portal-gnomeparxdg-desktop-portal-kdesous KDE Plasma,xdg-desktop-portal-wlrsous Sway ou un autre compositeur wlroots,xdg-desktop-portal-hyprlandsous Hyprland.À l’écran : la version installable, soit
30.2.3+dfsg-3sous Debian 13 trixie,32.2.2+ds-1sous Debian forky ou sid, puis la ligne0 upgraded, 0 newly installeden fin d’installation. Sur Ubuntu 24.04 LTS, le dépôt universe fournit obs-studio 30.0.2. Le backend installé se contrôle avecdpkg -l | grep xdg-desktop-portal. Si le portail tournait déjà,systemctl --user restart xdg-desktop-portalle recharge ; ses journaux se lisent avec les commandes systemd habituelles. -
Ajouter la source dans OBS Studio. Le bouton
+du panneau Sources ouvre la liste : choisir « Screen Capture (PipeWire) ». Le portail ouvre alors sa propre boîte de dialogue, qui propose les écrans et les fenêtres disponibles et attend une validation. Le libellé exact dépend du backend, GNOME, KDE ou wlroots.À l’écran : la boîte de dialogue du portail, puis l’écran choisi dans l’aperçu d’OBS Studio, et ces quatre lignes dans le journal, dans cet ordre :
info: User added source 'Screen Capture (PipeWire)' (pipewire-screen-capture-source) to scene 'Scene' info: [pipewire] Screencast session created info: [pipewire] Asking for monitor and window info: [pipewire] source selected, setting up screencast
Les propriétés de la source contiennent un bouton pour resélectionner l’écran et une case pour afficher ou masquer le curseur.
-
Régler la sortie puis enregistrer. Dans Réglages, catégorie Sortie, onglet Enregistrement, se trouvent le dossier de destination, le format et l’encodeur. Sous Linux, OBS Studio écrit par défaut dans le dossier personnel de l’utilisateur, comme le rappelle le Wiki Arch. Lancer ensuite un essai de dix secondes, puis l’arrêter.
À l’écran : le voyant d’enregistrement en rouge, la durée qui s’incrémente dans la barre d’état, puis un fichier au nom horodaté du type
2026-09-19 14-22-05.mkv, dans le dossier affiché par les réglages.ls -lt ~/Vidéos | head -n 3 -
Relire le fichier et contrôler le journal. Chaque lancement écrit un fichier texte horodaté dans
~/.config/obs-studio/logs/, également accessible par le menu Aide, puis Fichiers journaux.ls -t ~/.config/obs-studio/logs/*.txt | head -n 1 grep pipewire ~/.config/obs-studio/logs/*.txt | tail -n 20À l’écran : les lignes de l’étape 3, suivies du format négocié, du type
info: [pipewire] Size: 1920x1080etinfo: [pipewire] Framerate: 60/1. La lecture du fichier doit montrer une image qui bouge et un son présent, sans aplat noir.
« Failed to start screencast, denied or cancelled by user » accuse l’utilisateur, pas la cause
Ce message ne signifie pas qu’une autorisation a été refusée. Dans le code du plugin, il est écrit quand la réponse du portail à la demande de démarrage porte un code non nul : c’est le cas d’une boîte de dialogue fermée, mais aussi celui d’un backend qui échoue à répondre. Le journal qui accompagne l’écran noir est celui-ci :
info: PipeWire initialized info: [pipewire] Screencast session created info: [pipewire] Asking for monitor and window warning: [pipewire] Failed to start screencast, denied or cancelled by user
Le rapport d’anomalie 5794 du dépôt OBS Studio montre le cas sans ambiguïté : un utilisateur d’OBS Studio 27.1.3 sous Arch Linux et KDE Plasma 5.23.90 obtient un écran noir et cette ligne, sans jamais avoir vu la moindre boîte de dialogue. Le refus supposé n’a pas eu lieu, c’est le portail qui n’a pas répondu. L’ordre de vérification qui règle la majorité des cas : confirmer la présence de l’interface org.freedesktop.portal.ScreenCast, vérifier que le backend du bureau est installé, relancer le portail, puis lire ses messages.
systemctl --user restart xdg-desktop-portal
journalctl --user -b -u xdg-desktop-portal -n 40
Deux autres lignes du même fichier ont la même origine, avec un code non nul à une étape antérieure : [pipewire] Failed to create session, denied or cancelled by user et [pipewire] Failed to select source, denied or cancelled by user. Le remède est identique.
Un ancien journal ne dit pas ce qu’écrit un journal actuel
Sur une version antérieure d’OBS Studio, une capture réussie s’écrit [pipewire] desktop selected, setting up screencast ; les versions actuelles écrivent [pipewire] source selected, setting up screencast. Un tutoriel plus ancien qui fait chercher la première phrase conduit donc à conclure à tort à un échec.
Les correctifs suivent aussi les versions. Les notes d’OBS Studio 32.2, publiées le 21 juillet 2026, mentionnent « Fixed an issue where PipeWire could fail on NVIDIA GPUs » ; cette version relève le SDK NVIDIA en version 13 et impose un pilote 570 ou plus récent. OBS Studio 32.1.2, publié le 21 avril 2026, corrige « an issue with PipeWire when capturing a device that does not require a framerate ».
Sous wlroots, le portail prend le premier écran si aucun sélecteur n’est installé
Le backend xdg-desktop-portal-wlr, fourni en version 0.7.1-2 par Debian 13, ne dessine pas de boîte de dialogue : il cherche un sélecteur externe, dans cet ordre, slurp, wmenu, wofi, rofi, bemenu, mew puis fuzzel. Sans aucun de ces programmes, il capture le premier écran trouvé sans rien demander. Ce portail a une seconde condition, souvent oubliée : il a besoin des variables XDG_CURRENT_DESKTOP et WAYLAND_DISPLAY dans la session utilisateur de systemd, sway étant à remplacer par le nom du compositeur.
systemctl --user show-environment | grep -E 'WAYLAND_DISPLAY|XDG_CURRENT_DESKTOP'
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
Quelle version pour quelle distribution
OBS Studio et son portail ne sont pas fournis aux mêmes versions selon le dépôt. Les numéros ci-dessous sont ceux des dépôts officiels des distributions ; la colonne PipeWire donne la version du serveur multimédia.
| Distribution | obs-studio | xdg-desktop-portal | pipewire |
|---|---|---|---|
| Debian 12 bookworm | 29.0.2+dfsg-1 | 1.16.0-2 | 0.3.65 |
| Debian 13 trixie | 30.2.3+dfsg-3 | 1.20.3+ds-1 | 1.4.2-1 |
| Debian forky et sid | 32.2.2+ds-1 | 1.22.1+ds-1 | non relevé |
| Ubuntu 24.04 LTS | 30.0.2+dfsg-3build1, dépôt universe | non vérifié | non vérifié |
| Flathub, paquet Flatpak | 32.2.2 | sans objet | sans objet |
Les versions d’xdg-desktop-portal et de pipewire fournies par Ubuntu 24.04 LTS n’ont pas pu être vérifiées dans les archives de paquets : il ne faut pas les supposer identiques à celles de Debian. Sous Debian 12 bookworm, le backend GNOME est xdg-desktop-portal-gnome 43.1-2, et obs-studio 29.0.2 y dispose déjà de la source PipeWire. Le paquet Flatpak apporte OBS Studio 32.2.2 sur une distribution plus ancienne, mais il utilise le portail et le serveur PipeWire du système, qu’il ne remplace pas. Pour choisir entre dépôt et Flatpak, la rubrique logiciels détaille les critères qui changent quelque chose, à commencer par les mises à jour et l’accès aux fichiers.
Questions fréquentes
La source « Screen Capture (PipeWire) » n’apparaît pas dans la liste, que vérifier ?
Le portail n’annonce aucune source capturable, et OBS Studio écrit [pipewire] No capture sources available dans son journal. Lancer busctl --user introspect org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop : sans ligne org.freedesktop.portal.ScreenCast, le backend du bureau est absent, ou bien XDG_CURRENT_DESKTOP désigne un autre bureau que celui dont le backend est installé.
Faut-il installer xdg-desktop-portal-gtk pour la capture d’écran ?
Non. La matrice des backends du Wiki Arch indique que xdg-desktop-portal-gtk n’implémente pas le portail ScreenCast : ce paquet sert de repli pour d’autres interfaces, comme les boîtes de dialogue de fichiers. Sous GNOME, le backend qui capture est xdg-desktop-portal-gnome ; sous KDE Plasma, xdg-desktop-portal-kde.
La boîte de dialogue d’autorisation revient-elle à chaque lancement d’OBS Studio ?
Pas si le portail expose l’interface ScreenCast en version 4 ou plus. OBS Studio envoie alors persist_mode à 2, la valeur documentée pour une autorisation qui persiste jusqu’à révocation, et conserve le jeton de restauration dans les propriétés de la source. Ce jeton est à usage unique et remplacé à chaque session. Si l’écran mémorisé a disparu ou si l’autorisation a été retirée, le portail redemande la sélection.
Pourquoi un écran a-t-il été capturé sans qu’aucune sélection soit demandée ?
C’est le comportement de xdg-desktop-portal-wlr sous Sway et les autres compositeurs wlroots : sans slurp, wofi, rofi, wmenu, bemenu, mew ni fuzzel installé, il retombe sur le premier écran détecté. Installer slurp rétablit une sélection explicite, avec un curseur en croix et un clic sur l’écran à capturer.
Sources : OBS Studio, plugins/linux-pipewire/screencast-portal.c, lignes de journal et propriétés du portail, OBS Studio 32.2.2, notes de version du 14 août 2026, OBS Studio 32.2, notes de version du 21 juillet 2026, xdg-desktop-portal, interface org.freedesktop.portal.ScreenCast, ArchWiki PipeWire, WebRTC screen sharing, ArchWiki XDG Desktop Portal, backends et variables de session, ArchWiki OBS Studio, plugin Qt 6 et source PipeWire, Debian Package Tracker, obs-studio, Debian Package Tracker, xdg-desktop-portal, OBS Studio, rapport d’anomalie 5794, busctl(1), commande get-property.