diff --git a/src-tauri/src/commands/windows.rs b/src-tauri/src/commands/windows.rs index 12ffe60..5c2cc36 100644 --- a/src-tauri/src/commands/windows.rs +++ b/src-tauri/src/commands/windows.rs @@ -58,6 +58,14 @@ pub async fn open_preview_window(app: tauri::AppHandle) -> Result<(), String> { let use_native_decorations = cfg!(target_os = "linux"); + // Preview is a transient helper overlay, not a primary surface. It + // should (a) follow the user across virtual desktops — otherwise the + // overlay vanishes the moment they switch workspace mid-dictation — + // and (b) stay out of the Alt+Tab / taskbar lists. skip_taskbar covers + // both on KWin (KWin's default Alt+Tab list reads _NET_WM_STATE_SKIP_TASKBAR); + // visible_on_all_workspaces sets _NET_WM_STATE_STICKY via GTK on X11 + // / XWayland so the overlay is pinned. Matches the ergonomic OpenWhispr + // PR #183 shipped for KDE Plasma Wayland. let mut builder = WebviewWindowBuilder::new( &app, "transcription-preview", @@ -69,6 +77,7 @@ pub async fn open_preview_window(app: tauri::AppHandle) -> Result<(), String> { .max_inner_size(520.0, 360.0) .always_on_top(true) .skip_taskbar(true) + .visible_on_all_workspaces(true) .focused(false) .decorations(use_native_decorations) .resizable(true);