单实例
使用 Single Instance 插件确保在任意时刻只运行一个 Tauri 应用实例。
支持的平台
此插件需要至少 Rust 版本 1.77.2。
平台 | 级别 | 备注 |
---|---|---|
windows | ||
linux | ||
macos | ||
android | | |
ios | |
设置
开始使用前,请安装 Single Instance 插件。
使用项目包管理器添加依赖项
npm run tauri add single-instance
yarn run tauri add single-instance
pnpm tauri add single-instance
deno task tauri add single-instance
bun tauri add single-instance
cargo tauri add single-instance
-
在
src-tauri
文件夹中运行以下命令,以将插件添加到项目的Cargo.toml
依赖项中cargo add tauri-plugin-single-instance --target 'cfg(any(target_os = "macos", windows, target_os = "linux"))' -
修改
lib.rs
以初始化插件lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().setup(|app| {#[cfg(desktop)]app.handle().plugin(tauri_plugin_single_instance::init(|app, args, cwd| {}));Ok(())}).run(tauri::generate_context!()).expect("error while running tauri application");}
用法
插件已经安装并初始化,它应立即正常工作。然而,我们还可以使用 init()
方法来增强其功能。
插件 init()
方法接受一个闭包,当新应用程序实例启动并被插件关闭时调用该闭包。闭包有三个参数
app
: 应用程序的 AppHandle。args
: 用户传递给此新实例的参数列表。cwd
: 当前工作目录,表示从该目录启动了新的应用程序实例。
因此,闭包看起来如下所示
.plugin(tauri_plugin_single_instance::init(|app, args, cwd| { // Write your code here...}))
关注新实例
默认情况下,当在应用程序已运行的情况下启动新实例时,不会采取任何操作。要使用户尝试打开新实例时聚焦于正在运行的实例的窗口,请修改回调闭包如下所示
use tauri::{AppHandle, Manager};
pub fn run() { let mut builder = tauri::Builder::default(); #[cfg(desktop)] { builder = builder.plugin(tauri_plugin_single_instance::init(|app, args, cwd| { let _ = app.get_webview_window("main") .expect("no main window") .set_focus(); })); }
builder .run(tauri::generate_context!()) .expect("error while running tauri application");}
© 2025 Tauri 贡献者。CC-BY / MIT