diff --git a/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp b/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp index 8d1aa0c..52c83e9 100644 --- a/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp +++ b/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp @@ -237,7 +237,25 @@ bool PowerController::hasMultipleDisplaySession() QVariant v = displayMgr.property("Sessions"); if (!v.isValid()) return false; - return qdbus_cast>(v).size() >= 2; + + const QList sessions = qdbus_cast>(v); + if (!isWaylandSession()) + return sessions.size() >= 2; + + // On Treeland the default display manager (ddm) keeps a default session(dde) + int userSessions = 0; + for (const QDBusObjectPath &path : sessions) { + QDBusInterface session("org.freedesktop.DisplayManager", path.path(), + "org.freedesktop.DisplayManager.Session", + QDBusConnection::systemBus()); + if (!session.isValid()) + continue; + if (session.property("UserName").toString() == QLatin1String("dde")) + continue; + ++userSessions; + } + + return userSessions >= 2; } void PowerController::doPrepareSuspend()