even more deltarune

This commit is contained in:
2026-03-24 20:27:19 +02:00
parent 64797aedd4
commit 1deeda7f1a
6 changed files with 327 additions and 26 deletions

View File

@@ -19,9 +19,16 @@ QtObject {
property bool appUsageLoaded: false
property var windowRequests: ({})
property var quickSettingsPayload: ({})
property var globals: ({
"notifications.stackPreviewEnabled": true
property var defaultGlobals: ({
"notifications.stackPreviewEnabled": true,
"shell.mprisOverlayEnabled": true
})
property var globals: Object.assign({}, defaultGlobals)
property string globalsPath: {
var homeDir = Quickshell.env("HOME");
return homeDir ? homeDir + "/.local/share/deltarunequickshell/globals.json" : "";
}
property bool globalsLoaded: false
signal shellOpened
signal shellClosed
@@ -175,7 +182,17 @@ QtObject {
appUsageFile.writeAdapter();
}
function persistGlobals() {
if (!globalsLoaded)
return;
if (!globalsFile || !globalsAdapter)
return;
globalsAdapter.values = globals || ({});
globalsFile.writeAdapter();
}
onAppUsageCountsChanged: persistAppUsage()
onGlobalsChanged: persistGlobals()
property FileView appUsageFile: FileView {
id: appUsageFile
@@ -199,6 +216,28 @@ QtObject {
}
}
property FileView globalsFile: FileView {
id: globalsFile
path: manager.globalsPath
watchChanges: true
onFileChanged: reload()
onLoaded: {
var loaded = globalsAdapter && globalsAdapter.values ? globalsAdapter.values : ({});
manager.globals = Object.assign({}, manager.defaultGlobals, loaded);
manager.globalsLoaded = true;
}
onLoadFailed: {
manager.globals = Object.assign({}, manager.defaultGlobals);
manager.globalsLoaded = true;
manager.persistGlobals();
}
JsonAdapter {
id: globalsAdapter
property var values: ({})
}
}
function setGlobal(key, value) {
var updated = Object.assign({}, globals);
updated[key] = value;
@@ -206,7 +245,7 @@ QtObject {
}
function global(key, defaultValue) {
return globals.hasOwnProperty(key) ? globals[key] : defaultValue;
return Object.prototype.hasOwnProperty.call(globals, key) ? globals[key] : defaultValue;
}
function notificationStackPreviewEnabled() {
@@ -220,4 +259,16 @@ QtObject {
function toggleNotificationStackPreviewEnabled() {
setNotificationStackPreviewEnabled(!notificationStackPreviewEnabled());
}
function mprisOverlayEnabled() {
return Boolean(global("shell.mprisOverlayEnabled", true));
}
function setMprisOverlayEnabled(enabled) {
setGlobal("shell.mprisOverlayEnabled", Boolean(enabled));
}
function toggleMprisOverlayEnabled() {
setMprisOverlayEnabled(!mprisOverlayEnabled());
}
}