From 8d8eba000fa54865ba2635328b6aed8a151686a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 3 Feb 2022 01:57:46 +0100 Subject: [PATCH] dbusServices: Allow replacement The REPLACE flag we currently pass is useless, as replacing the service is disallowed when not started with the ALLOW_REPLACEMENT flag. Fix this by adopting a more standard pattern where replacement is always allowed, but only actually requested when `--replace` is passed on the command line. Part-of: --- js/dbusServices/dbusService.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/dbusServices/dbusService.js b/js/dbusServices/dbusService.js index 71b1e35d7..3e2fde06a 100644 --- a/js/dbusServices/dbusService.js +++ b/js/dbusServices/dbusService.js @@ -6,6 +6,8 @@ const Signals = imports.signals; const IDLE_SHUTDOWN_TIME = 2; // s +const { programArgs } = imports.system; + var ServiceImplementation = class { constructor(info, objectPath) { this._objectPath = objectPath; @@ -167,9 +169,13 @@ var DBusService = class { this._service.register(); + let flags = Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT; + if (programArgs.includes('--replace')) + flags |= Gio.BusNameOwnerFlags.REPLACE; + Gio.DBus.own_name(Gio.BusType.SESSION, this._name, - Gio.BusNameOwnerFlags.REPLACE, + flags, () => this._service.export(), null, () => this._loop.quit());