With the WebRTC GStreamer plugins loading correctly (see #3494)
and a working audio input device present, starting a huddle on Linux fails with:
The request is not allowed by the user agent or the platform in the current
context, possibly because the user denied permission.
No permission prompt is ever shown.
On macOS/Windows the OS provides the mic-permission UI, but on Linux WebKitGTK the
embedding application must answer WebKitUserMediaPermissionRequest (via the
permission-request signal / wry's permission hook) — an unanswered request is a
denial. I can't find a handler for this in the desktop shell, which would make
getUserMedia structurally un-grantable on Linux regardless of hardware.
Diagnostic ladder ruled out (Arch, native 0.5.0):
- GStreamer webrtc/nice plugins load (after the bundled-lib workaround above);
- an audio source is present and enumerable (verified with a PipeWire source;
with no source present the error is a constraint error instead, as expected);
- the failure is then NotAllowedError with no prompt → permission layer.
Suggested fix: handle WebKitUserMediaPermissionRequest in the Linux WebView
(allow for the app's own origin, or surface an in-app prompt), and ideally also
webkit_settings_set_enable_media_stream(TRUE) if not already set.
Happy to test a build — this is the last blocker for voice on native Linux as far
as I can tell.
Environment: as #3494.
With the WebRTC GStreamer plugins loading correctly (see #3494)
and a working audio input device present, starting a huddle on Linux fails with:
No permission prompt is ever shown.
On macOS/Windows the OS provides the mic-permission UI, but on Linux WebKitGTK the
embedding application must answer
WebKitUserMediaPermissionRequest(via thepermission-requestsignal / wry's permission hook) — an unanswered request is adenial. I can't find a handler for this in the desktop shell, which would make
getUserMediastructurally un-grantable on Linux regardless of hardware.Diagnostic ladder ruled out (Arch, native 0.5.0):
with no source present the error is a constraint error instead, as expected);
Suggested fix: handle
WebKitUserMediaPermissionRequestin the Linux WebView(allow for the app's own origin, or surface an in-app prompt), and ideally also
webkit_settings_set_enable_media_stream(TRUE)if not already set.Happy to test a build — this is the last blocker for voice on native Linux as far
as I can tell.
Environment: as #3494.