diff --git a/.changes/single-instance-dbus-name.md b/.changes/single-instance-dbus-name.md new file mode 100644 index 00000000..18b8eea1 --- /dev/null +++ b/.changes/single-instance-dbus-name.md @@ -0,0 +1,6 @@ +--- +"single-instance": patch +--- + +Fix D-Bus name replacement logic on Linux to prevent multiple instances from acquiring the same well-known name. +This patch updates the `zbus` dependency to the latest compatible version (`^5.9`) and explicitly sets `RequestNameFlags` to ensure a second instance fails to acquire the D-Bus name when another one is already running. \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 62acfde8..23e1abf2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -404,17 +404,6 @@ dependencies = [ "slab", ] -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" version = "2.4.0" @@ -3702,9 +3691,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.29.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ "bitflags 2.9.0", "cfg-if", @@ -8844,16 +8833,6 @@ dependencies = [ "rustix 1.0.5", ] -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - [[package]] name = "xkeysym" version = "0.2.1" @@ -8886,13 +8865,12 @@ dependencies = [ [[package]] name = "zbus" -version = "5.5.0" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" +checksum = "4bb4f9a464286d42851d18a605f7193b8febaf5b0919d71c6399b7b26e5b0aad" dependencies = [ "async-broadcast", "async-executor", - "async-fs", "async-io", "async-lock", "async-process", @@ -8905,17 +8883,15 @@ dependencies = [ "futures-core", "futures-lite", "hex", - "nix 0.29.0", + "nix 0.30.1", "ordered-stream", "serde", "serde_repr", - "static_assertions", "tokio", "tracing", "uds_windows", "windows-sys 0.59.0", "winnow 0.7.6", - "xdg-home", "zbus_macros", "zbus_names", "zvariant", @@ -8923,9 +8899,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.5.0" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" +checksum = "ef9859f68ee0c4ee2e8cde84737c78e3f4c54f946f2a38645d0d4c7a95327659" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", @@ -9123,14 +9099,13 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.4.0" +version = "5.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" +checksum = "d91b3680bb339216abd84714172b5138a4edac677e641ef17e1d8cb1b3ca6e6f" dependencies = [ "endi", "enumflags2", "serde", - "static_assertions", "url", "winnow 0.7.6", "zvariant_derive", @@ -9139,9 +9114,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.4.0" +version = "5.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" +checksum = "3a8c68501be459a8dbfffbe5d792acdd23b4959940fc87785fb013b32edbc208" dependencies = [ "proc-macro-crate 3.3.0", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index cfa616ca..2d1b4c0e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ schemars = "0.8" dunce = "1" specta = "^2.0.0-rc.16" glob = "0.3" -zbus = "5" +zbus = "5.9" [workspace.package] edition = "2021" diff --git a/plugins/single-instance/src/platform_impl/linux.rs b/plugins/single-instance/src/platform_impl/linux.rs index 3136074f..577965c5 100644 --- a/plugins/single-instance/src/platform_impl/linux.rs +++ b/plugins/single-instance/src/platform_impl/linux.rs @@ -61,6 +61,8 @@ pub fn init(f: Box>) -> TauriPlugin { .unwrap() .name(dbus_name.as_str()) .unwrap() + .replace_existing_names(false) + .allow_name_replacements(false) .serve_at(dbus_path.as_str(), single_instance_dbus) .unwrap() .build()