forked from quickshell/quickshell
core/qmlglobal: add dataPath(), statePath() and cachePath()
This commit is contained in:
parent
c1c24c2998
commit
a05c0de53b
3 changed files with 30 additions and 0 deletions
|
@ -11,6 +11,7 @@
|
||||||
#include <qloggingcategory.h>
|
#include <qloggingcategory.h>
|
||||||
#include <qstandardpaths.h>
|
#include <qstandardpaths.h>
|
||||||
#include <qtenvironmentvariables.h>
|
#include <qtenvironmentvariables.h>
|
||||||
|
#include <qtversionchecks.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "instanceinfo.hpp"
|
#include "instanceinfo.hpp"
|
||||||
|
@ -232,7 +233,18 @@ QDir QsPaths::shellDataDir() {
|
||||||
|
|
||||||
QDir QsPaths::shellStateDir() {
|
QDir QsPaths::shellStateDir() {
|
||||||
if (this->shellStateState == DirState::Unknown) {
|
if (this->shellStateState == DirState::Unknown) {
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 7, 0)
|
||||||
|
QDir dir;
|
||||||
|
if (qEnvironmentVariableIsSet("XDG_STATE_HOME")) {
|
||||||
|
dir = QDir(qEnvironmentVariable("XDG_STATE_HOME"));
|
||||||
|
} else {
|
||||||
|
auto home = QDir(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
|
||||||
|
dir = QDir(home.filePath(".local/state"));
|
||||||
|
}
|
||||||
|
#else
|
||||||
auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::StateLocation));
|
auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::StateLocation));
|
||||||
|
#endif
|
||||||
|
|
||||||
dir = QDir(dir.filePath("by-shell"));
|
dir = QDir(dir.filePath("by-shell"));
|
||||||
dir = QDir(dir.filePath(this->shellId));
|
dir = QDir(dir.filePath(this->shellId));
|
||||||
this->mShellStateDir = dir;
|
this->mShellStateDir = dir;
|
||||||
|
|
|
@ -202,6 +202,18 @@ QString QuickshellGlobal::cacheDir() const { // NOLINT
|
||||||
return QsPaths::instance()->shellCacheDir().path();
|
return QsPaths::instance()->shellCacheDir().path();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QuickshellGlobal::dataPath(const QString& path) const {
|
||||||
|
return this->dataDir() % '/' % path;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QuickshellGlobal::statePath(const QString& path) const {
|
||||||
|
return this->stateDir() % '/' % path;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QuickshellGlobal::cachePath(const QString& path) const {
|
||||||
|
return this->cacheDir() % '/' % path;
|
||||||
|
}
|
||||||
|
|
||||||
QVariant QuickshellGlobal::env(const QString& variable) { // NOLINT
|
QVariant QuickshellGlobal::env(const QString& variable) { // NOLINT
|
||||||
auto vstr = variable.toStdString();
|
auto vstr = variable.toStdString();
|
||||||
if (!qEnvironmentVariableIsSet(vstr.data())) return QVariant::fromValue(nullptr);
|
if (!qEnvironmentVariableIsSet(vstr.data())) return QVariant::fromValue(nullptr);
|
||||||
|
|
|
@ -155,6 +155,12 @@ public:
|
||||||
/// Setting the `fallback` parameter of `iconPath` will attempt to load the fallback
|
/// Setting the `fallback` parameter of `iconPath` will attempt to load the fallback
|
||||||
/// icon if the requested one could not be loaded.
|
/// icon if the requested one could not be loaded.
|
||||||
Q_INVOKABLE static QString iconPath(const QString& icon, const QString& fallback);
|
Q_INVOKABLE static QString iconPath(const QString& icon, const QString& fallback);
|
||||||
|
/// Equivalent to `${Quickshell.dataDir}/${path}`
|
||||||
|
Q_INVOKABLE [[nodiscard]] QString dataPath(const QString& path) const;
|
||||||
|
/// Equivalent to `${Quickshell.stateDir}/${path}`
|
||||||
|
Q_INVOKABLE [[nodiscard]] QString statePath(const QString& path) const;
|
||||||
|
/// Equivalent to `${Quickshell.cacheDir}/${path}`
|
||||||
|
Q_INVOKABLE [[nodiscard]] QString cachePath(const QString& path) const;
|
||||||
|
|
||||||
[[nodiscard]] QString shellRoot() const;
|
[[nodiscard]] QString shellRoot() const;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue