fix: enable microphone access on Linux via WebKitGTK

WebKitGTK denies getUserMedia by default. This adds webkit2gtk as a
Linux dependency and configures the webview to enable media streams
and auto-grant UserMediaPermissionRequest for microphone access.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
Ivan
2026-02-27 06:49:08 +01:00
co-authored by Claude Opus 4.6
parent 5ad67d7ecb
commit d21c63b52c
3 changed files with 32 additions and 1 deletions
+27
View File
@@ -635,6 +635,33 @@ pub fn run() {
}
}
// Enable microphone access on Linux (WebKitGTK denies getUserMedia by default)
#[cfg(target_os = "linux")]
{
use tauri::Manager;
if let Some(window) = app.get_webview_window("main") {
let _ = window.with_webview(|webview| {
use webkit2gtk::{WebViewExt, SettingsExt, PermissionRequestExt};
use webkit2gtk::glib::ObjectExt;
let wk_webview = webview.inner();
// Enable media stream support in WebKitGTK settings
if let Some(settings) = WebViewExt::settings(&wk_webview) {
settings.set_enable_media_stream(true);
}
// Auto-grant UserMediaPermissionRequest (microphone access)
wk_webview.connect_permission_request(move |_, request: &webkit2gtk::PermissionRequest| {
if request.is::<webkit2gtk::UserMediaPermissionRequest>() {
request.allow();
return true;
}
false
});
});
}
}
Ok(())
})
.invoke_handler(tauri::generate_handler![