单例
使用单实例插件确保 Tauri 应用程序在同一时间只运行单个实例。
设置
请安装单例插件。
使用项目的包管理器来添加依赖。
npm run tauri add single-instance
yarn run tauri add single-instance
pnpm tauri add single-instance
bun tauri add single-instance
cargo tauri add single-instance
安装: 在
Cargo.toml
中将插件添加到项目的依赖中。src-tauri/Cargo.toml [dependencies]tauri-plugin-single-instance = "2.0.0-rc"src-tauri/Cargo.toml [dependencies]tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" }初始化: 更新
lib.rs
(或者只针对桌面应用的main.rs
) 来初始化插件。src-tauri/src/lib.rs pub fn run() {tauri::Builder::default().plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})).run(tauri::generate_context!()).expect("error while running tauri application");}
用法
插件已经安装并初始化,应该可以立即正常运行。尽管如此,我们也可以使用 init()
方法来增强它的功能。
插件的 init()
方法接受一个闭包,该闭包在新 App 实例启动时调用,但由插件关闭。
这个闭包有三个参数:
app
:应用程序的 AppHandle 。args
:用户初始化新实例时传递的参数列表。cwd
:当前工作目录表示启动新应用程序实例的目录。
因此,闭包应该如下所示
.plugin(tauri_plugin_single_instance::init(|app, args, cwd| { // 在这里写代码 ……}))
关注新实例
默认情况下,当应用程序已经在运行时启动新实例时,不会采取任何操作。当用户尝试打开一个新实例时,为了聚焦正在运行实例的窗口,修改回调闭包如下。
use tauri::{AppHandle, Manager};
pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, args, cwd| { let _ = show_window(app); })) .run(tauri::generate_context!()) .expect("error while running tauri application");}
fn show_window(app: &AppHandle) { let windows = app.webview_windows();
windows .values() .next() .expect("Sorry, no window found") .set_focus() .expect("Can't Bring Window to Focus");}
© 2024 Tauri Contributors. CC-BY / MIT