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

  1. Verify xdg-desktop-portal and PipeWire are running before sharing
  2. Confirm the installed portal backend matches your compositor (GNOME/KDE/wlroots)
  3. 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


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/4d5a449710748206. Report an issue: GitHub.