From 429b5376cbe31dc55a4318d2f73b3cbb05dd680a Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:03:14 -0500 Subject: [PATCH] docs: add caveats for Electron PipeWire implementation (#48713) Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: byquanton <32410361+byquanton@users.noreply.github.com> --- docs/api/desktop-capturer.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/api/desktop-capturer.md b/docs/api/desktop-capturer.md index 822eabeac875..63f647c47478 100644 --- a/docs/api/desktop-capturer.md +++ b/docs/api/desktop-capturer.md @@ -102,6 +102,10 @@ Returns `Promise` - Resolves with an array of [`Desktop ## Caveats +`desktopCapturer.getSources(options)` only returns a single source on Linux when using Pipewire. + +PipeWire supports a single capture for both screens and windows. If you request the window and screen type, the selected source will be returned as a window capture. + `navigator.mediaDevices.getUserMedia` does not work on macOS for audio capture due to a fundamental limitation whereby apps that want to access the system's audio require a [signed kernel extension](https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/KernelExtensions/KernelExtensions.html). Chromium, and by extension Electron, does not provide this. It is possible to circumvent this limitation by capturing system audio with another macOS app like Soundflower and passing it through a virtual audio input device. This virtual device can then be queried with `navigator.mediaDevices.getUserMedia`.