跳转到内容
Tauri

单例

GitHub crates.io
API Reference

使用单实例插件确保 Tauri 应用程序在同一时间只运行单个实例。

Supported Platforms

This plugin requires a Rust version of at least 1.77.2

Platform Level Notes
windows
linux
macos
android
ios

设置

请安装单例插件。

使用项目的包管理器来添加依赖。

npm run tauri add single-instance

用法

插件已经安装并初始化,应该可以立即正常运行。尽管如此,我们也可以使用 init() 方法来增强它的功能。

插件的 init() 方法接受一个闭包,该闭包在新 App 实例启动时调用,但由插件关闭。 这个闭包有三个参数:

  1. app:应用程序的 AppHandle
  2. args:用户初始化新实例时传递的参数列表。
  3. cwd:当前工作目录表示启动新应用程序实例的目录。

因此,闭包应该如下所示

.plugin(tauri_plugin_single_instance::init(|app, args, cwd| {
// 在这里写代码 ……
}))

关注新实例

默认情况下,当应用程序已经在运行时启动新实例时,不会采取任何操作。当用户尝试打开一个新实例时,为了聚焦正在运行实例的窗口,修改回调闭包如下。

src-tauri/src/lib.rs
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