From 9233fcec03fc85cd50d35834dbd172eb9ca6091d Mon Sep 17 00:00:00 2001 From: Junseo5 Date: Tue, 6 Jan 2026 02:06:38 +0900 Subject: [PATCH] fix(desktop): add single-instance plugin to prevent multiple windows When launching the desktop app while plugins are loading slowly, multiple instances could spawn because there was no single-instance guard. This caused 10+ windows to open continuously on Windows. This fix adds tauri-plugin-single-instance which: - Prevents multiple app instances from running - Focuses existing window when user tries to launch another instance - Unminimizes window if it was minimized Fixes #XXXX --- packages/desktop/src-tauri/Cargo.toml | 1 + packages/desktop/src-tauri/src/lib.rs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml index b7c238f064f..9ca5880c029 100644 --- a/packages/desktop/src-tauri/Cargo.toml +++ b/packages/desktop/src-tauri/Cargo.toml @@ -29,6 +29,7 @@ tauri-plugin-window-state = "2" tauri-plugin-clipboard-manager = "2" tauri-plugin-http = "2" tauri-plugin-notification = "2" +tauri-plugin-single-instance = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/packages/desktop/src-tauri/src/lib.rs b/packages/desktop/src-tauri/src/lib.rs index 46c0ab256db..92cd7e873db 100644 --- a/packages/desktop/src-tauri/src/lib.rs +++ b/packages/desktop/src-tauri/src/lib.rs @@ -189,6 +189,13 @@ pub fn run() { let updater_enabled = option_env!("TAURI_SIGNING_PRIVATE_KEY").is_some(); let mut builder = tauri::Builder::default() + .plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| { + // Focus existing window when another instance is launched + if let Some(window) = app.get_webview_window("main") { + let _ = window.set_focus(); + let _ = window.unminimize(); + } + })) .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_window_state::Builder::new().build()) .plugin(tauri_plugin_store::Builder::new().build())