diff --git a/daemon/kdeconnectd.cpp b/daemon/kdeconnectd.cpp index 27feb43dd..82fa02e7d 100644 --- a/daemon/kdeconnectd.cpp +++ b/daemon/kdeconnectd.cpp @@ -21,6 +21,11 @@ #include #include #include +#include +#include +#include +#include +#include #include #include @@ -91,6 +96,21 @@ int main(int argc, char* argv[]) app.setOrganizationDomain(QStringLiteral("kde.org")); app.setQuitOnLastWindowClosed(false); + QCommandLineParser parser; + QCommandLineOption replaceOption({QStringLiteral("replace")}, i18n("Replace an existing instance")); + parser.addOption(replaceOption); + aboutData.setupCommandLine(&parser); + + parser.process(app); + aboutData.processCommandLine(&parser); + if (parser.isSet(replaceOption)) { + auto message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.kdeconnectd"), + QStringLiteral("/MainApplication"), + QStringLiteral("org.qtproject.Qt.QCoreApplication"), + QStringLiteral("quit")); + QDBusConnection::sessionBus().call(message); //deliberately block until it's done, so we register the name after the app quits + } + KDBusService dbusService(KDBusService::Unique); Daemon* daemon = new DesktopDaemon;