mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2025-11-04 19:04:56 +11:00
parent
ea79eaceb0
commit
1e8cc2e78d
5 changed files with 36 additions and 8 deletions
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
- Added support for creating wayland idle inhibitors.
|
- Added support for creating wayland idle inhibitors.
|
||||||
- Added support for wayland idle timeouts.
|
- Added support for wayland idle timeouts.
|
||||||
|
- Added the ability to override Quickshell.cacheDir with a custom path.
|
||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,19 @@ QsPaths* QsPaths::instance() {
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QsPaths::init(QString shellId, QString pathId, QString dataOverride, QString stateOverride) {
|
void QsPaths::init(
|
||||||
|
QString shellId,
|
||||||
|
QString pathId,
|
||||||
|
QString dataOverride,
|
||||||
|
QString stateOverride,
|
||||||
|
QString cacheOverride
|
||||||
|
) {
|
||||||
auto* instance = QsPaths::instance();
|
auto* instance = QsPaths::instance();
|
||||||
instance->shellId = std::move(shellId);
|
instance->shellId = std::move(shellId);
|
||||||
instance->pathId = std::move(pathId);
|
instance->pathId = std::move(pathId);
|
||||||
instance->shellDataOverride = std::move(dataOverride);
|
instance->shellDataOverride = std::move(dataOverride);
|
||||||
instance->shellStateOverride = std::move(stateOverride);
|
instance->shellStateOverride = std::move(stateOverride);
|
||||||
|
instance->shellCacheOverride = std::move(cacheOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
QDir QsPaths::crashDir(const QString& id) {
|
QDir QsPaths::crashDir(const QString& id) {
|
||||||
|
|
@ -316,9 +323,16 @@ QDir QsPaths::shellStateDir() {
|
||||||
|
|
||||||
QDir QsPaths::shellCacheDir() {
|
QDir QsPaths::shellCacheDir() {
|
||||||
if (this->shellCacheState == DirState::Unknown) {
|
if (this->shellCacheState == DirState::Unknown) {
|
||||||
auto dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
|
QDir dir;
|
||||||
dir = QDir(dir.filePath("by-shell"));
|
if (this->shellCacheOverride.isEmpty()) {
|
||||||
dir = QDir(dir.filePath(this->shellId));
|
dir = QDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation));
|
||||||
|
dir = QDir(dir.filePath("by-shell"));
|
||||||
|
dir = QDir(dir.filePath(this->shellId));
|
||||||
|
} else {
|
||||||
|
auto basedir = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation);
|
||||||
|
dir = QDir(this->shellCacheOverride.replace("$BASE", basedir));
|
||||||
|
}
|
||||||
|
|
||||||
this->mShellCacheDir = dir;
|
this->mShellCacheDir = dir;
|
||||||
|
|
||||||
qCDebug(logPaths) << "Initialized cache path:" << dir.path();
|
qCDebug(logPaths) << "Initialized cache path:" << dir.path();
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,13 @@ QDataStream& operator>>(QDataStream& stream, InstanceLockInfo& info);
|
||||||
class QsPaths {
|
class QsPaths {
|
||||||
public:
|
public:
|
||||||
static QsPaths* instance();
|
static QsPaths* instance();
|
||||||
static void init(QString shellId, QString pathId, QString dataOverride, QString stateOverride);
|
static void init(
|
||||||
|
QString shellId,
|
||||||
|
QString pathId,
|
||||||
|
QString dataOverride,
|
||||||
|
QString stateOverride,
|
||||||
|
QString cacheOverride
|
||||||
|
);
|
||||||
static QDir crashDir(const QString& id);
|
static QDir crashDir(const QString& id);
|
||||||
static QString basePath(const QString& id);
|
static QString basePath(const QString& id);
|
||||||
static QString ipcPath(const QString& id);
|
static QString ipcPath(const QString& id);
|
||||||
|
|
@ -65,4 +71,5 @@ private:
|
||||||
|
|
||||||
QString shellDataOverride;
|
QString shellDataOverride;
|
||||||
QString shellStateOverride;
|
QString shellStateOverride;
|
||||||
|
QString shellCacheOverride;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -127,18 +127,21 @@ class QuickshellGlobal: public QObject {
|
||||||
/// Usually `~/.local/share/quickshell/by-shell/<shell-id>`
|
/// Usually `~/.local/share/quickshell/by-shell/<shell-id>`
|
||||||
///
|
///
|
||||||
/// Can be overridden using `//@ pragma DataDir $BASE/path` in the root qml file, where `$BASE`
|
/// Can be overridden using `//@ pragma DataDir $BASE/path` in the root qml file, where `$BASE`
|
||||||
/// corrosponds to `$XDG_DATA_HOME` (usually `~/.local/share`).
|
/// corresponds to `$XDG_DATA_HOME` (usually `~/.local/share`).
|
||||||
Q_PROPERTY(QString dataDir READ dataDir CONSTANT);
|
Q_PROPERTY(QString dataDir READ dataDir CONSTANT);
|
||||||
/// The per-shell state directory.
|
/// The per-shell state directory.
|
||||||
///
|
///
|
||||||
/// Usually `~/.local/state/quickshell/by-shell/<shell-id>`
|
/// Usually `~/.local/state/quickshell/by-shell/<shell-id>`
|
||||||
///
|
///
|
||||||
/// Can be overridden using `//@ pragma StateDir $BASE/path` in the root qml file, where `$BASE`
|
/// Can be overridden using `//@ pragma StateDir $BASE/path` in the root qml file, where `$BASE`
|
||||||
/// corrosponds to `$XDG_STATE_HOME` (usually `~/.local/state`).
|
/// corresponds to `$XDG_STATE_HOME` (usually `~/.local/state`).
|
||||||
Q_PROPERTY(QString stateDir READ stateDir CONSTANT);
|
Q_PROPERTY(QString stateDir READ stateDir CONSTANT);
|
||||||
/// The per-shell cache directory.
|
/// The per-shell cache directory.
|
||||||
///
|
///
|
||||||
/// Usually `~/.cache/quickshell/by-shell/<shell-id>`
|
/// Usually `~/.cache/quickshell/by-shell/<shell-id>`
|
||||||
|
///
|
||||||
|
/// Can be overridden using `//@ pragma CacheDir $BASE/path` in the root qml file, where `$BASE`
|
||||||
|
/// corresponds to `$XDG_CACHE_HOME` (usually `~/.cache`).
|
||||||
Q_PROPERTY(QString cacheDir READ cacheDir CONSTANT);
|
Q_PROPERTY(QString cacheDir READ cacheDir CONSTANT);
|
||||||
// clang-format on
|
// clang-format on
|
||||||
QML_SINGLETON;
|
QML_SINGLETON;
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
|
||||||
QHash<QString, QString> envOverrides;
|
QHash<QString, QString> envOverrides;
|
||||||
QString dataDir;
|
QString dataDir;
|
||||||
QString stateDir;
|
QString stateDir;
|
||||||
|
QString cacheDir;
|
||||||
} pragmas;
|
} pragmas;
|
||||||
|
|
||||||
auto stream = QTextStream(&file);
|
auto stream = QTextStream(&file);
|
||||||
|
|
@ -109,6 +110,8 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
|
||||||
pragmas.dataDir = pragma.sliced(8).trimmed();
|
pragmas.dataDir = pragma.sliced(8).trimmed();
|
||||||
} else if (pragma.startsWith("StateDir ")) {
|
} else if (pragma.startsWith("StateDir ")) {
|
||||||
pragmas.stateDir = pragma.sliced(9).trimmed();
|
pragmas.stateDir = pragma.sliced(9).trimmed();
|
||||||
|
} else if (pragma.startsWith("CacheDir ")) {
|
||||||
|
pragmas.cacheDir = pragma.sliced(9).trimmed();
|
||||||
} else {
|
} else {
|
||||||
qCritical() << "Unrecognized pragma" << pragma;
|
qCritical() << "Unrecognized pragma" << pragma;
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -150,7 +153,7 @@ int launch(const LaunchArgs& args, char** argv, QCoreApplication* coreApplicatio
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QsPaths::init(shellId, pathId, pragmas.dataDir, pragmas.stateDir);
|
QsPaths::init(shellId, pathId, pragmas.dataDir, pragmas.stateDir, pragmas.cacheDir);
|
||||||
QsPaths::instance()->linkRunDir();
|
QsPaths::instance()->linkRunDir();
|
||||||
QsPaths::instance()->linkPathDir();
|
QsPaths::instance()->linkPathDir();
|
||||||
LogManager::initFs();
|
LogManager::initFs();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue