tauri_plugin_single_instance/
lib.rs1#![doc(
8 html_logo_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png",
9 html_favicon_url = "https://github.com/tauri-apps/tauri/raw/dev/app-icon.png"
10)]
11#![cfg(not(any(target_os = "android", target_os = "ios")))]
12
13use tauri::{plugin::TauriPlugin, AppHandle, Manager, Runtime};
14
15#[cfg(target_os = "windows")]
16#[path = "platform_impl/windows.rs"]
17mod platform_impl;
18#[cfg(target_os = "linux")]
19#[path = "platform_impl/linux.rs"]
20mod platform_impl;
21#[cfg(target_os = "macos")]
22#[path = "platform_impl/macos.rs"]
23mod platform_impl;
24
25#[cfg(feature = "semver")]
26mod semver_compat;
27
28pub(crate) type SingleInstanceCallback<R> =
29 dyn FnMut(&AppHandle<R>, Vec<String>, String) + Send + Sync + 'static;
30
31pub fn init<R: Runtime, F: FnMut(&AppHandle<R>, Vec<String>, String) + Send + Sync + 'static>(
32 mut f: F,
33) -> TauriPlugin<R> {
34 platform_impl::init(Box::new(move |app, args, cwd| {
35 #[cfg(feature = "deep-link")]
36 if let Some(deep_link) = app.try_state::<tauri_plugin_deep_link::DeepLink<R>>() {
37 deep_link.handle_cli_arguments(args.iter());
38 }
39 f(app, args, cwd)
40 }))
41}
42
43pub fn destroy<R: Runtime, M: Manager<R>>(manager: &M) {
44 platform_impl::destroy(manager)
45}