{"record":{"id":"4d5a449710748206","repo":"zed-industries/zed","slug":"screen-sharing-timed-out-waiting-for-the-first-fra","errorCode":null,"errorMessage":"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.","messagePattern":"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\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/livekit_client/src/livekit_client/linux.rs","lineNumber":183,"sourceCode":"            let _ = failure_tx.send(());\n        }\n    });\n\n    let capture_task = cx.background_executor().spawn(async move {\n        if let Err(error) = tokio_task.await {\n            log::error!(\"Wayland capture task failed: {error}\");\n        }\n    });\n\n    let executor = cx.background_executor().clone();\n    let video_source = video_source_rx\n        .next()\n        .with_timeout(Duration::from_secs(PIPEWIRE_TIMEOUT_S), &executor)\n        .await\n        .map_err(|_| {\n            stop_flag.store(true, Ordering::Relaxed);\n            log::error!(\"Wayland desktop capture timed out.\");\n            anyhow::anyhow!(\n                \"Screen sharing timed out waiting for the first frame. \\\n                 Check that xdg-desktop-portal and PipeWire are running, \\\n                 and that your portal backend matches your compositor.\"\n            )\n        })?\n        .ok_or_else(|| {\n            stop_flag.store(true, Ordering::Relaxed);\n            anyhow::anyhow!(\n                \"Screen sharing was canceled, permission was denied, or the PipeWire \\\n                 connection failed. You can try again from the screen share button.\"\n            )\n        })?;\n\n    let track = super::LocalVideoTrack(track::LocalVideoTrack::create_video_track(\n        \"screen share\",\n        RtcVideoSource::Native(video_source),\n    ));\n","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/livekit_client/src/livekit_client/linux.rs#L165-L201","documentation":"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.","triggerScenarios":"Thrown at crates/livekit_client/src/livekit_client/linux.rs:183 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}