From cf5b51364dcbb0ec990645f2df76fc5bb3e30638 Mon Sep 17 00:00:00 2001 From: cutefishd Date: Mon, 19 Apr 2021 09:34:50 +0800 Subject: [PATCH] Session: Load all autostart directories --- session/processmanager.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/session/processmanager.cpp b/session/processmanager.cpp index c1e6b3b..b854105 100644 --- a/session/processmanager.cpp +++ b/session/processmanager.cpp @@ -1,6 +1,7 @@ #include "processmanager.h" #include +#include #include #include #include @@ -115,17 +116,14 @@ void ProcessManager::loadSystemProcess() void ProcessManager::loadAutoStartProcess() { QStringList execList; - QStringList xdgDesktopList; - xdgDesktopList << "/etc/xdg/autostart"; - - for (const QString &dirName : xdgDesktopList) { - QDir dir(dirName); - if (!dir.exists()) - continue; - - const QFileInfoList files = dir.entryInfoList(QStringList("*.desktop"), QDir::Files | QDir::Readable); - for (const QFileInfo &fi : files) { - QSettings desktop(fi.filePath(), QSettings::IniFormat); + const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, + QStringLiteral("autostart"), + QStandardPaths::LocateDirectory); + for (const QString &dir : dirs) { + const QDir d(dir); + const QStringList fileNames = d.entryList(QStringList() << QStringLiteral("*.desktop")); + for (const QString &file : fileNames) { + QSettings desktop(d.absoluteFilePath(file), QSettings::IniFormat); desktop.setIniCodec("UTF-8"); desktop.beginGroup("Desktop Entry");