Commit e1b14655 authored by Fabian Vogt's avatar Fabian Vogt
Browse files

startkde: Reload systemd on Plasma start

If the time between logout and relogin is short enough or a separate session
is open during that time, the systemd user instance keeps running. This means
that generators like the one for XDG autostart handling aren't run again, which
effectively means it's still using the configuration from the previous session.

Just reload systemd on every login to make sure its state is fresh.
parent fcbb1de7
Pipeline #186902 passed with stage
in 6 minutes and 14 seconds
......@@ -504,6 +504,17 @@ void resetSystemdFailedUnits()
QDBusConnection::sessionBus().call(message);
}
// Reload systemd to make sure the current configuration is active, which also reruns generators.
// Needed for e.g. XDG autostart changes to become effective.
void reloadSystemd()
{
QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.systemd1"),
QStringLiteral("/org/freedesktop/systemd1"),
QStringLiteral("org.freedesktop.systemd1.Manager"),
QStringLiteral("Reload"));
QDBusConnection::sessionBus().call(message);
}
bool hasSystemdService(const QString &serviceName)
{
qDBusRegisterMetaType<QPair<QString, QString>>();
......@@ -611,6 +622,7 @@ static void migrateUserScriptsAutostart()
bool startPlasmaSession(bool wayland)
{
resetSystemdFailedUnits();
reloadSystemd();
OrgKdeKSplashInterface iface(QStringLiteral("org.kde.KSplash"), QStringLiteral("/KSplash"), QDBusConnection::sessionBus());
iface.setStage(QStringLiteral("startPlasma"));
// finally, give the session control to the session manager
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment