zed-industries/zed · error
Screen sharing timed out waiting for the first frame. Check
Error message
Screen sharing timed out waiting for the first frame. Check that xdg-desktop-portal and PipeWire are running, and that your portal backend matches your compositor.
What it means
Timeout in start_wayland_desktop_capture: no NativeVideoSource arrived on the channel within PIPEWIRE_TIMEOUT_S, meaning the portal dialog/PipeWire stream never produced a first frame. The capture is flagged to stop and the share attempt is aborted.
Source
Thrown at crates/livekit_client/src/livekit_client/linux.rs:183
let _ = failure_tx.send(());
}
});
let capture_task = cx.background_executor().spawn(async move {
if let Err(error) = tokio_task.await {
log::error!("Wayland capture task failed: {error}");
}
});
let executor = cx.background_executor().clone();
let video_source = video_source_rx
.next()
.with_timeout(Duration::from_secs(PIPEWIRE_TIMEOUT_S), &executor)
.await
.map_err(|_| {
stop_flag.store(true, Ordering::Relaxed);
log::error!("Wayland desktop capture timed out.");
anyhow::anyhow!(
"Screen sharing timed out waiting for the first frame. \
Check that xdg-desktop-portal and PipeWire are running, \
and that your portal backend matches your compositor."
)
})?
.ok_or_else(|| {
stop_flag.store(true, Ordering::Relaxed);
anyhow::anyhow!(
"Screen sharing was canceled, permission was denied, or the PipeWire \
connection failed. You can try again from the screen share button."
)
})?;
let track = super::LocalVideoTrack(track::LocalVideoTrack::create_video_track(
"screen share",
RtcVideoSource::Native(video_source),
));
View on GitHub (pinned to f4178619ac)
Solutions
- Verify xdg-desktop-portal and PipeWire are running before sharing
- Confirm the installed portal backend matches your compositor (GNOME/KDE/wlroots)
- Grant screen-share permission in the portal dialog and retry
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at crates/livekit_client/src/livekit_client/linux.rs:183 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/4d5a449710748206.
Report an issue: GitHub.