diff --git a/src/kdbusservice.cpp b/src/kdbusservice.cpp --- a/src/kdbusservice.cpp +++ b/src/kdbusservice.cpp @@ -94,8 +94,18 @@ objectPath.replace(QLatin1Char('-'), QLatin1Char('_')); // see spec change at https://bugs.freedesktop.org/show_bug.cgi?id=95129 if (options & Multiple) { - const QString pid = QString::number(QCoreApplication::applicationPid()); - d->serviceName += QLatin1Char('-') + pid; + bool inSandbox = false; + if (!qEnvironmentVariableIsEmpty("XDG_RUNTIME_DIR")) { + const QByteArray runtimeDir = qgetenv("XDG_RUNTIME_DIR"); + if (!runtimeDir.isEmpty()) { + inSandbox = QFileInfo::exists(QString::fromUtf8(runtimeDir) + QLatin1String("/flatpak-info")); + } + } + + if (inSandbox) + d->serviceName += QStringLiteral(".kdbus-") + QDBusConnection::sessionBus().baseService().replace(QRegularExpression(QStringLiteral("[\\.:]")), QStringLiteral("_")); + else + d->serviceName += QLatin1Char('-') + QString::number(QCoreApplication::applicationPid()); } QDBusConnection::sessionBus().registerObject(QStringLiteral("/MainApplication"), QCoreApplication::instance(),