fix: correct getXDGDataDirs

Signed-off-by: black-desk <me@black-desk.cn>
This commit is contained in:
black-desk 2023-08-14 11:56:47 +08:00 committed by Comix
parent e3bfb1cc7a
commit b0c3475a3d

View File

@ -306,23 +306,28 @@ inline QString getRelativePathFromAppId(const QString &id)
inline QStringList getXDGDataDirs() inline QStringList getXDGDataDirs()
{ {
const static auto XDGDataDirs = []() { const static auto XDGDataDirs = []() {
auto env = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts); auto XDGDataDirs = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")).split(':', Qt::SkipEmptyParts);
if (env.isEmpty()) { if (XDGDataDirs.isEmpty()) {
env.append(QString{qgetenv("HOME")} + QDir::separator() + ".local/share"); XDGDataDirs.append("/usr/local/share");
env.append("/usr/local/share"); XDGDataDirs.append("/usr/share");
env.append("/usr/share");
qputenv("XDG_DATA_DIRS", env.join(':').toLocal8Bit());
} }
std::for_each(env.begin(), env.end(), [](QString &str) { auto XDGDataHome = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME"));
if (XDGDataHome.isEmpty()) {
XDGDataHome = QString{qgetenv("HOME")} + QDir::separator() + ".local" + QDir::separator() + "share";
}
XDGDataDirs.push_front(XDGDataHome);
std::for_each(XDGDataDirs.begin(), XDGDataDirs.end(), [](QString &str) {
if (!str.endsWith(QDir::separator())) { if (!str.endsWith(QDir::separator())) {
str.append(QDir::separator()); str.append(QDir::separator());
} }
str.append("applications"); str.append("applications");
}); });
return env; return XDGDataDirs;
}(); }();
return XDGDataDirs; return XDGDataDirs;