From bb0374d0e9e0a0dd0c0bf8848c2c2b46e90407ea Mon Sep 17 00:00:00 2001 From: Lucas Fernandes Nogueira Date: Tue, 6 Sep 2022 08:30:33 -0300 Subject: [PATCH] fix: use bundle identifier in dbus path and name (#10) --- examples/vanilla/src-tauri/Cargo.lock | 26 ++++++++++++-------------- src/platform_impl/linux.rs | 23 +++++++++++++++-------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/examples/vanilla/src-tauri/Cargo.lock b/examples/vanilla/src-tauri/Cargo.lock index 036aa539..edb2af4f 100644 --- a/examples/vanilla/src-tauri/Cargo.lock +++ b/examples/vanilla/src-tauri/Cargo.lock @@ -1715,12 +1715,11 @@ checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] name = "nix" -version = "0.23.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" dependencies = [ "bitflags", - "cc", "cfg-if", "libc", "memoffset", @@ -3969,9 +3968,9 @@ checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" [[package]] name = "zbus" -version = "2.3.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8f1a037b2c4a67d9654dc7bdfa8ff2e80555bbefdd3c1833c1d1b27c963a6b" +checksum = "1faa83cd7c79d3a669220c634528577b98ff43c35aa7c827ab3e9990692f7868" dependencies = [ "async-broadcast", "async-channel", @@ -3990,7 +3989,6 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "lazy_static", "nix", "once_cell", "ordered-stream", @@ -4009,9 +4007,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "2.3.2" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8fb5186d1c87ae88cf234974c240671238b4a679158ad3b94ec465237349a6" +checksum = "fd5874c328b945cab1865a299e31f855072fa528bafbbfa3249394b352d5742b" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -4022,9 +4020,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45dfcdcf87b71dad505d30cc27b1b7b88a64b6d1c435648f48f9dbc1fdc4b7e1" +checksum = "41a408fd8a352695690f53906dc7fd036be924ec51ea5e05666ff42685ed0af5" dependencies = [ "serde", "static_assertions", @@ -4033,9 +4031,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.4.1" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2c71467724d4a77f0a1f0339dab10ca5d63f6a82411289cdcdfbfd47d2e407" +checksum = "1bd68e4e6432ef19df47d7e90e2e72b5e7e3d778e0ae3baddf12b951265cc758" dependencies = [ "byteorder", "enumflags2", @@ -4047,9 +4045,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.4.1" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c47f3630ce926a03abf21f5a8db90c60c81ed71599b5c86ad1a54fd3c7564c5" +checksum = "08e977eaa3af652f63d479ce50d924254ad76722a6289ec1a1eac3231ca30430" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/src/platform_impl/linux.rs b/src/platform_impl/linux.rs index 752de87e..af7986a3 100644 --- a/src/platform_impl/linux.rs +++ b/src/platform_impl/linux.rs @@ -2,9 +2,8 @@ use crate::SingleInstanceCallback; use tauri::{ - AppHandle, plugin::{self, TauriPlugin}, - Manager, RunEvent, Runtime, + AppHandle, Manager, RunEvent, Runtime, }; use zbus::{ blocking::{Connection, ConnectionBuilder}, @@ -19,22 +18,31 @@ struct SingleInstanceDBus { } #[dbus_interface(name = "org.SingleInstance.DBus")] -impl SingleInstanceDBus { +impl SingleInstanceDBus { fn execute_callback(&mut self, argv: Vec, cwd: String) { (self.callback)(&self.app_handle, argv, cwd); } } +fn dbus_id(app: &AppHandle) -> String { + app.config() + .tauri + .bundle + .identifier + .replace('.', "_") + .replace('-', "_") +} + pub fn init(f: Box>) -> TauriPlugin { plugin::Builder::new("single-instance") .setup(|app| { - let app_name = app.package_info().name.clone(); + let id = dbus_id(app); let single_instance_dbus = SingleInstanceDBus { callback: f, app_handle: app.clone(), }; - let dbus_name = format!("org.{}.SingleInstance", app_name); - let dbus_path = format!("/org/{}/SingleInstance", app_name); + let dbus_name = format!("org.{}.SingleInstance", id); + let dbus_path = format!("/org/{}/SingleInstance", id); match ConnectionBuilder::session() .unwrap() @@ -73,8 +81,7 @@ pub fn init(f: Box>) -> TauriPlugin { .on_event(|app, event| { if let RunEvent::Exit = event { if let Some(connection) = app.try_state::() { - let app_name = app.package_info().name.clone(); - let dbus_name = format!("org.{}.SingleInstance", app_name); + let dbus_name = format!("org.{}.SingleInstance", dbus_id(app)); let _ = connection.0.release_name(dbus_name); } }