插件概览
灵动桌面框架集成了 6 个 Tauri 官方插件,均已在 lib.rs 注册、在 capabilities/default.json 授权,开箱即用。
已集成插件
| 插件 | 用途 | 说明 |
|---|---|---|
| Single Instance | 禁止多开 | 纯 Rust 侧,无前端 API;重复启动时唤回已运行的窗口 |
| Store | 键值持久化存储 | 已注册,模板前端暂未调用(配置项走 SQLite) |
| Log | 日志系统 | 输出到控制台 + 日志文件;开发 Info / 生产 Warn |
| Updater | 应用自动更新 | 设置页「检查更新」→ 下载安装 → 重启 |
| Opener | 打开 URL/文件 | 调用系统默认程序,模板前端暂未调用 |
| Process | 进程管理 | 重启、退出应用(更新完成后重启即用它) |
对应的依赖:
| 插件 | Rust crate(src-tauri/Cargo.toml) | 前端包(package.json) | 权限(capabilities/default.json) |
|---|---|---|---|
| Single Instance | tauri-plugin-single-instance | 无 | 无需 |
| Store | tauri-plugin-store | @tauri-apps/plugin-store | store:default |
| Log | tauri-plugin-log | @tauri-apps/plugin-log | log:default |
| Updater | tauri-plugin-updater | @tauri-apps/plugin-updater | updater:default |
| Opener | tauri-plugin-opener | @tauri-apps/plugin-opener | opener:default |
| Process | tauri-plugin-process | @tauri-apps/plugin-process | process:default |
插件注册
所有插件在 src-tauri/src/lib.rs 中统一注册:
tauri::Builder::default()
// 禁止多开(必须是第一个注册的插件)
.plugin(tauri_plugin_single_instance::init(|app, _argv, _cwd| {
services::main_window_placement::show_main(app, "二次启动");
}))
.plugin(tauri_plugin_opener::init())
.plugin(tauri_plugin_store::Builder::default().build())
.plugin(
tauri_plugin_log::Builder::default()
// 开发环境日志更详细,生产环境只记录 Warn 及以上
.level(if cfg!(debug_assertions) {
log::LevelFilter::Info
} else {
log::LevelFilter::Warn
})
.build(),
)
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_process::init())
禁止多开
Single Instance 以 identifier 作为实例锁:第二个实例启动后立即退出,回调在已运行的实例里执行——还原并显示主窗口(关闭按钮是隐藏到托盘,窗口很可能处于隐藏态)、抢焦点,并把窗口纠回用户上次所在的显示器。
pnpm tauri:dev 启动的开发版会合并 tauri.conf.dev.json,其 identifier 是 com.agilefr.tauri.dev,与正式版 com.agilefr.tauri 不同,所以 dev 与正式版可以同时各开一个,互不阻塞。
添加新插件
- 安装 Rust crate 和前端包
- 在
lib.rs中注册插件 - 在
capabilities/default.json中添加权限 - 在前端使用插件 API