diff --git a/startkde/plasma-session/startup.h b/startkde/plasma-session/startup.h --- a/startkde/plasma-session/startup.h +++ b/startkde/plasma-session/startup.h @@ -109,6 +109,7 @@ private: QProcess* m_process; const QString m_serviceId; + const QProcessEnvironment m_additionalEnv; }; class RestoreSessionJob: public KJob diff --git a/startkde/plasma-session/startup.cpp b/startkde/plasma-session/startup.cpp --- a/startkde/plasma-session/startup.cpp +++ b/startkde/plasma-session/startup.cpp @@ -421,19 +421,21 @@ : KJob() , m_process(new QProcess(this)) , m_serviceId(serviceId) + , m_additionalEnv(additionalEnv) { m_process->setProgram(process); m_process->setArguments(args); - auto env = QProcessEnvironment::systemEnvironment(); - env.insert(additionalEnv); - m_process->setProcessEnvironment(env); auto watcher = new QDBusServiceWatcher(serviceId, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForRegistration, this); connect(watcher, &QDBusServiceWatcher::serviceRegistered, this, &StartServiceJob::emitResult); } void StartServiceJob::start() { + auto env = QProcessEnvironment::systemEnvironment(); + env.insert(m_additionalEnv); + m_process->setProcessEnvironment(env); + if (QDBusConnection::sessionBus().interface()->isServiceRegistered(m_serviceId)) { qCDebug(PLASMA_SESSION) << m_process << "already running"; emitResult();