You added Display Capture and the screen is black
You open OBS Studio to record a tutorial or stream a game. You add a "Display Capture" source. The preview stays black. The status bar says "Window is invalid" or just nothing happens. You check your firewall. You check your permissions. You restart OBS three times. The screen remains dark. This is the classic Wayland capture wall. Fedora defaults to Wayland now. The old X11 capture method has no access to the display server. You need PipeWire.
Restart OBS after installing the plugin. The binary caches the available source types on launch.
Wayland isolates applications from the display server
Wayland changes how applications access the screen. In the X11 world, the display server is a shared resource. Any application with the right permissions can grab a frame from the screen buffer. OBS used this to its advantage. It just reached out and pulled pixels. Wayland enforces isolation. Each application gets its own private surface. One app cannot snoop on another app's output. This is a security feature. It prevents keyloggers and screen scrapers from running wild.
Think of X11 as an open office where everyone can look at everyone's monitor. Think of Wayland as cubicles with blinds. Each app has its own private workspace. OBS cannot just grab the screen anymore. It needs permission. It needs a protocol that respects the isolation. That protocol is PipeWire.
PipeWire acts as a media router. It allows applications to share audio and video streams explicitly. OBS must ask PipeWire for a stream. PipeWire asks the compositor (GNOME, KDE, etc.) to grant access. The compositor prompts you. You approve. The stream flows. The capture works only when the chain of trust is complete.
Trust the isolation. The black screen is the security model working, not a bug.
Install the PipeWire plugin for your OBS installation
The fix depends on how you installed OBS. Fedora users install OBS via RPM or Flatpak. The two methods are isolated. The system plugin does not work with the Flatpak sandbox. The Flatpak plugin does not work with the system binary. Check your installation method first.
Here is how to check whether you are using the RPM or Flatpak version of OBS.
rpm -q obs-studio
# WHY: This command checks if the RPM package is installed.
# If the output shows a version number, you are using the system package.
# If the output says "package obs-studio is not installed", you are likely using Flatpak.
If you are using the RPM package, install the system plugin.
sudo dnf install obs-studio-plugin-pipewire
# WHY: This package provides the PipeWire integration plugin for OBS.
# It adds the "PipeWire Screen Capture" and "PipeWire Window Capture" source types.
# Without this plugin, OBS only knows about X11 and GDK capture methods.
If you are using Flatpak, install the plugin inside the sandbox.
flatpak install org.obsproject.Studio.Plugin.Pipewire
# WHY: This command installs the PipeWire plugin into the OBS Flatpak sandbox.
# Flatpak plugins are separate from system packages.
# The system plugin and the Flatpak plugin are isolated from each other.
Close OBS completely. Open it again. Go to the Sources dock. Click the plus icon. Select "PipeWire Screen Capture". Name the source. Click OK. A dialog appears asking for permission. Click "Allow". The preview should populate.
Restart OBS completely. The plugin loads at startup. A hot-reload will not register the new source type.
Verify the capture stream and session services
Visual confirmation is the first step. Look at the preview. Move your mouse. Open a window. The capture should follow. Check the OBS status bar. It should show the resolution and FPS. If you see the resolution text, the stream is active.
PipeWire and WirePlumber must be running for capture to work. If either service is inactive, the plugin cannot connect to the media session manager. Verify the user session services are active.
systemctl --user status pipewire wireplumber
# WHY: PipeWire and WirePlumber must be running for capture to work.
# If either service is inactive, the plugin cannot connect to the media session manager.
# This command confirms the user session services are active and running.
You can also list the available capture nodes to ensure the compositor is exposing the screen.
wpctl status
# WHY: This command lists all available PipeWire nodes.
# Look for "Screen" or "Window" nodes under the "Sources" section.
# If no nodes appear, the portal or compositor is not exposing capture devices.
OBS stores its configuration in ~/.config/obs-studio/basic/config.json. The file is a JSON document. JSON does not support comments. You must edit the file carefully. The Video section controls the canvas dimensions. If your capture looks stretched, the canvas resolution does not match the source resolution. PipeWire captures the display at its native resolution. OBS scales the input to the canvas size defined in this file. Mismatched values cause stretching or black bars.
{
"Video": {
"BaseCX": 1920,
"BaseCY": 1080
}
}
Check the preview, not the status bar. The status bar can lie about connection state while the video stream is dead.
Common errors and how to read them
Errors in OBS usually point to a missing dependency or a permission denial. The OBS log file contains the exact error code. Open the log via Help > Log Files > View Current Log. Search for "PipeWire". The log lines around the error explain the failure.
You see Error: Failed to create source in the OBS logs. This usually means the PipeWire plugin is missing or PipeWire itself is not running. If you installed the plugin and still see this error, check the systemctl output. WirePlumber might have crashed. Restart the user services.
systemctl --user restart pipewire wireplumber
# WHY: Restarting the services clears stale state and reloads the session manager.
# This fixes transient failures where the portal connection drops.
# Run this before reinstalling OBS or the plugin.
You see a black screen but hear audio. This happens when you select "PipeWire Window Capture" for a window that is not a Wayland client, or when the capture region is misconfigured. Some applications run as X11 clients even on a Wayland session. PipeWire Window Capture cannot grab X11 windows reliably. Switch to "PipeWire Screen Capture" or use the X11 fallback if you are on an X11 session.
You get a permission denied error. The compositor prompt was dismissed or blocked. Check your privacy settings. GNOME and KDE have settings that control screen recording permissions. Ensure OBS is allowed to record the screen. On GNOME, check Settings > Privacy > Screen Recording. On KDE, check System Settings > Privacy > Screen Recording.
Read the OBS log file. The log contains the exact error code from PipeWire. Search the log for 'PipeWire' to find the failure point.
Choose the capture method that matches your setup
OBS offers multiple capture sources. The wrong choice causes black screens or poor performance. Use the source type that aligns with your session and your goal.
Use PipeWire Screen Capture when you need to record the entire desktop on a Wayland session.
Use PipeWire Window Capture when you want to isolate a specific application window and exclude the taskbar or other overlays.
Use Display Capture only when you are running an X11 session and PipeWire capture is unavailable.
Use Game Capture when you are recording a game that uses Vulkan or OpenGL and you want lower latency with direct hardware access.
Use Window Capture (X11/GDK) only as a fallback when PipeWire fails and you cannot switch capture methods.
Use the RPM plugin when you installed OBS via dnf.
Use the Flatpak plugin when you installed OBS via flatpak.
Pick the source type that matches your session. Mixing X11 and Wayland capture methods causes black screens.