diff options
author | Rainer Keller <Rainer.Keller@qt.io> | 2019-01-22 08:52:47 +0100 |
---|---|---|
committer | Rainer Keller <Rainer.Keller@qt.io> | 2019-02-04 13:11:50 +0000 |
commit | d6768e5a16521c11fffb4b50eaf085f8c13272a7 (patch) | |
tree | 416a006cd473feb8b6af3ef02f2817f23d6ed85f | |
parent | 2a791f276dadc75afb39e4d3d44ca056c1912447 (diff) |
Write desktop entry and items to the correct folders
Data should not be written to directories in XDG_DATA_DIRS.
The spec state that files should only be writen to the
directory in XDG_DATA_HOME.
Change-Id: I755963fa2f70d03c77d7beec0e3f87accde925d0
Fixes: QTIFW-1269
Reviewed-by: Nikos Chantziaras <realnc@gmail.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
-rw-r--r-- | doc/operations.qdoc | 9 | ||||
-rw-r--r-- | src/libs/installer/createdesktopentryoperation.cpp | 6 | ||||
-rw-r--r-- | src/libs/installer/installiconsoperation.cpp | 10 |
3 files changed, 9 insertions, 16 deletions
diff --git a/doc/operations.qdoc b/doc/operations.qdoc index 697502145..9cba0d618 100644 --- a/doc/operations.qdoc +++ b/doc/operations.qdoc @@ -133,9 +133,8 @@ If \c filename is absolute, the desktop entry is stored there. Otherwise, it is stored in the location specified in - \c{$XDG_DATA_DIRS/applications} or - \c{$XDG_DATA_HOME/applications}, including the default paths for - both, as defined by freedesktop.org. + \c{$XDG_DATA_HOME/applications}, including the default path, + as defined by freedesktop.org. The key-value pairs are written to the file. @@ -145,8 +144,8 @@ \li "InstallIcons" \c directory \c [Vendorprefix] \li Installs the contents of \c directory into a location, as specified by freedesktop.org. That is, into - \c {$XDG_DATA_DIRS/icons}, \c {/usr/share/icons}, or - \c {$HOME/.icons}. The files are removed from their initial + \c {$XDG_DATA_HOME/icons} or + \c {$HOME/.local/share/icons}. The files are removed from their initial location. Make sure to add this operation after the operation that extracts the files from the archive. If you provide a \c Vendorprefix it replaces all characters up to the diff --git a/src/libs/installer/createdesktopentryoperation.cpp b/src/libs/installer/createdesktopentryoperation.cpp index d2e71b14f..17e165777 100644 --- a/src/libs/installer/createdesktopentryoperation.cpp +++ b/src/libs/installer/createdesktopentryoperation.cpp @@ -49,17 +49,13 @@ QString CreateDesktopEntryOperation::absoluteFileName() if (hasValue(QLatin1String("directory"))) return QDir(value(QLatin1String("directory")).toString()).absoluteFilePath(filename); - QStringList XDG_DATA_DIRS = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")) - .split(QLatin1Char(':'), - QString::SkipEmptyParts); QStringList XDG_DATA_HOME = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")) .split(QLatin1Char(':'), QString::SkipEmptyParts); - XDG_DATA_DIRS.push_back(QLatin1String("/usr/share")); // default path XDG_DATA_HOME.push_back(QDir::home().absoluteFilePath(QLatin1String(".local/share"))); // default path - const QStringList directories = XDG_DATA_DIRS + XDG_DATA_HOME; + const QStringList directories = XDG_DATA_HOME; QString directory; for (QStringList::const_iterator it = directories.begin(); it != directories.end(); ++it) { if (it->isEmpty()) diff --git a/src/libs/installer/installiconsoperation.cpp b/src/libs/installer/installiconsoperation.cpp index 4b8346e18..15d47c72a 100644 --- a/src/libs/installer/installiconsoperation.cpp +++ b/src/libs/installer/installiconsoperation.cpp @@ -42,20 +42,18 @@ QString InstallIconsOperation::targetDirectory() if (hasValue(QLatin1String("targetdirectory"))) return value(QLatin1String("targetdirectory")).toString(); - QStringList XDG_DATA_DIRS = QString::fromLocal8Bit(qgetenv("XDG_DATA_DIRS")) + QStringList XDG_DATA_HOME = QString::fromLocal8Bit(qgetenv("XDG_DATA_HOME")) .split(QLatin1Char(':'), QString::SkipEmptyParts); - XDG_DATA_DIRS.push_back(QLatin1String("/usr/share/pixmaps")); // default path - XDG_DATA_DIRS.push_back(QDir::home().absoluteFilePath(QLatin1String(".local/share/icons"))); // default path - XDG_DATA_DIRS.push_back(QDir::home().absoluteFilePath(QLatin1String(".icons"))); // default path + XDG_DATA_HOME.push_back(QDir::home().absoluteFilePath(QLatin1String(".local/share/icons"))); // default path QString directory; - const QStringList& directories = XDG_DATA_DIRS; + const QStringList& directories = XDG_DATA_HOME; for (QStringList::const_iterator it = directories.begin(); it != directories.end(); ++it) { if (it->isEmpty()) continue; - // our default dirs are correct, XDG_DATA_DIRS set via env need "icon" at the end + // our default dirs are correct, XDG_DATA_HOME set via env needs "icon" at the end if ((it + 1 == directories.end()) || (it + 2 == directories.end()) || (it + 3 == directories.end())) directory = QDir(*it).absolutePath(); else |