From 0816eeef1a65884b5fd422374f844548d794d5d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20B=C3=BCnger?= Date: Tue, 15 Jan 2019 13:33:30 +0100 Subject: [PATCH] Add parameter to specify busname This way multiple instances of signal-cli can run in daemon-mode in parallel. This was not possible previously as they tried to create the same DBus. This is rather my own quick fix and I guess there exists a cleaner way. (Maybe let the parser parse the busname directly to `SIGNAL_BUSNAME`.) --- src/main/java/org/asamk/signal/Main.java | 2 ++ .../java/org/asamk/signal/commands/DaemonCommand.java | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/asamk/signal/Main.java b/src/main/java/org/asamk/signal/Main.java index 2d15c096..a3a972f3 100644 --- a/src/main/java/org/asamk/signal/Main.java +++ b/src/main/java/org/asamk/signal/Main.java @@ -167,6 +167,8 @@ public class Main { .action(Arguments.version()); parser.addArgument("--config") .help("Set the path, where to store the config (Default: $XDG_DATA_HOME/signal-cli , $HOME/.local/share/signal-cli)."); + parser.addArgument("-n", "--busname") + .help("Name of the DBus."); MutuallyExclusiveGroup mut = parser.addMutuallyExclusiveGroup(); mut.addArgument("-u", "--username") diff --git a/src/main/java/org/asamk/signal/commands/DaemonCommand.java b/src/main/java/org/asamk/signal/commands/DaemonCommand.java index 9b6c0d63..0a8dc426 100644 --- a/src/main/java/org/asamk/signal/commands/DaemonCommand.java +++ b/src/main/java/org/asamk/signal/commands/DaemonCommand.java @@ -41,6 +41,7 @@ public class DaemonCommand implements LocalCommand { try { try { int busType; + String busName; if (ns.getBoolean("system")) { busType = DBusConnection.SYSTEM; } else { @@ -48,7 +49,12 @@ public class DaemonCommand implements LocalCommand { } conn = DBusConnection.getConnection(busType); conn.exportObject(SIGNAL_OBJECTPATH, m); - conn.requestBusName(SIGNAL_BUSNAME); + busName = ns.getString("busname"); + if (busName == null) { + conn.requestBusName(SIGNAL_BUSNAME); + } else { + conn.requestBusName(busName); + } } catch (UnsatisfiedLinkError e) { System.err.println("Missing native library dependency for dbus service: " + e.getMessage()); return 1;