summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js
diff options
context:
space:
mode:
authorNippy <nippy@rp1.hu>2026-05-08 19:50:49 +0200
committerNippy <nippy@rp1.hu>2026-05-08 19:50:49 +0200
commit3462bcc46ecf74f576ea4397f16492c16bd75b10 (patch)
treec5ab7aef4498647e057bda8d49c11e5f9dda74c9 /raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js
parent56616f693b4f263cbf0d47da43b67424efa6022d (diff)
downloadRaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.tar.gz
RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.zip
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js')
-rw-r--r--raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js275
1 files changed, 275 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js b/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js
new file mode 100644
index 0000000..f88bb03
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js
@@ -0,0 +1,275 @@
+.pragma library
+
+ .import "./SettingsSpec.js" as SpecModule
+
+function parse(root, jsonObj) {
+ var SPEC = SpecModule.SPEC;
+
+ if (!jsonObj) return;
+
+ for (var k in SPEC) {
+ if (k === "pluginSettings") continue;
+ // Runtime-only keys are never in the JSON; resetting them here
+ // would wipe values set by detection processes on every reload.
+ if (SPEC[k].persist === false) continue;
+ if (!(k in jsonObj)) {
+ root[k] = SPEC[k].def;
+ }
+ }
+
+ for (var k in jsonObj) {
+ if (!SPEC[k]) continue;
+ if (k === "pluginSettings") continue;
+ var raw = jsonObj[k];
+ var spec = SPEC[k];
+ var coerce = spec.coerce;
+ root[k] = coerce ? (coerce(raw) !== undefined ? coerce(raw) : root[k]) : raw;
+ }
+}
+
+function toJson(root) {
+ var SPEC = SpecModule.SPEC;
+ var out = {};
+ for (var k in SPEC) {
+ if (SPEC[k].persist === false) continue;
+ if (k === "pluginSettings") continue;
+ out[k] = root[k];
+ }
+ out.configVersion = root.settingsConfigVersion;
+ return out;
+}
+
+function migrateToVersion(obj, targetVersion) {
+ if (!obj) return null;
+
+ var settings = JSON.parse(JSON.stringify(obj));
+ var currentVersion = settings.configVersion || 0;
+
+ if (currentVersion >= targetVersion) {
+ return null;
+ }
+
+ if (currentVersion < 2) {
+ console.info("Migrating settings from version", currentVersion, "to version 2");
+
+ if (settings.barConfigs === undefined) {
+ var position = 0;
+ if (settings.dankBarAtBottom !== undefined || settings.topBarAtBottom !== undefined) {
+ var atBottom = settings.dankBarAtBottom !== undefined ? settings.dankBarAtBottom : settings.topBarAtBottom;
+ position = atBottom ? 1 : 0;
+ } else if (settings.dankBarPosition !== undefined) {
+ position = settings.dankBarPosition;
+ }
+
+ var defaultConfig = {
+ id: "default",
+ name: "Main Bar",
+ enabled: true,
+ position: position,
+ screenPreferences: ["all"],
+ showOnLastDisplay: true,
+ leftWidgets: settings.dankBarLeftWidgets || ["launcherButton", "workspaceSwitcher", "focusedWindow"],
+ centerWidgets: settings.dankBarCenterWidgets || ["music", "clock", "weather"],
+ rightWidgets: settings.dankBarRightWidgets || ["systemTray", "clipboard", "cpuUsage", "memUsage", "notificationButton", "battery", "controlCenterButton"],
+ spacing: settings.dankBarSpacing !== undefined ? settings.dankBarSpacing : 4,
+ innerPadding: settings.dankBarInnerPadding !== undefined ? settings.dankBarInnerPadding : 4,
+ bottomGap: settings.dankBarBottomGap !== undefined ? settings.dankBarBottomGap : 0,
+ transparency: settings.dankBarTransparency !== undefined ? settings.dankBarTransparency : 1.0,
+ widgetTransparency: settings.dankBarWidgetTransparency !== undefined ? settings.dankBarWidgetTransparency : 1.0,
+ squareCorners: settings.dankBarSquareCorners !== undefined ? settings.dankBarSquareCorners : false,
+ noBackground: settings.dankBarNoBackground !== undefined ? settings.dankBarNoBackground : false,
+ gothCornersEnabled: settings.dankBarGothCornersEnabled !== undefined ? settings.dankBarGothCornersEnabled : false,
+ gothCornerRadiusOverride: settings.dankBarGothCornerRadiusOverride !== undefined ? settings.dankBarGothCornerRadiusOverride : false,
+ gothCornerRadiusValue: settings.dankBarGothCornerRadiusValue !== undefined ? settings.dankBarGothCornerRadiusValue : 12,
+ borderEnabled: settings.dankBarBorderEnabled !== undefined ? settings.dankBarBorderEnabled : false,
+ borderColor: settings.dankBarBorderColor || "surfaceText",
+ borderOpacity: settings.dankBarBorderOpacity !== undefined ? settings.dankBarBorderOpacity : 1.0,
+ borderThickness: settings.dankBarBorderThickness !== undefined ? settings.dankBarBorderThickness : 1,
+ fontScale: settings.dankBarFontScale !== undefined ? settings.dankBarFontScale : 1.0,
+ autoHide: settings.dankBarAutoHide !== undefined ? settings.dankBarAutoHide : false,
+ autoHideDelay: settings.dankBarAutoHideDelay !== undefined ? settings.dankBarAutoHideDelay : 250,
+ openOnOverview: settings.dankBarOpenOnOverview !== undefined ? settings.dankBarOpenOnOverview : false,
+ visible: settings.dankBarVisible !== undefined ? settings.dankBarVisible : true,
+ popupGapsAuto: settings.popupGapsAuto !== undefined ? settings.popupGapsAuto : true,
+ popupGapsManual: settings.popupGapsManual !== undefined ? settings.popupGapsManual : 4
+ };
+
+ settings.barConfigs = [defaultConfig];
+
+ var legacyKeys = [
+ "dankBarLeftWidgets", "dankBarCenterWidgets", "dankBarRightWidgets",
+ "dankBarWidgetOrder", "dankBarAutoHide", "dankBarAutoHideDelay",
+ "dankBarOpenOnOverview", "dankBarVisible", "dankBarSpacing",
+ "dankBarBottomGap", "dankBarInnerPadding", "dankBarPosition",
+ "dankBarSquareCorners", "dankBarNoBackground", "dankBarGothCornersEnabled",
+ "dankBarGothCornerRadiusOverride", "dankBarGothCornerRadiusValue",
+ "dankBarBorderEnabled", "dankBarBorderColor", "dankBarBorderOpacity",
+ "dankBarBorderThickness", "popupGapsAuto", "popupGapsManual",
+ "dankBarAtBottom", "topBarAtBottom", "dankBarTransparency", "dankBarWidgetTransparency"
+ ];
+
+ for (var i = 0; i < legacyKeys.length; i++) {
+ delete settings[legacyKeys[i]];
+ }
+
+ console.info("Migrated single bar settings to barConfigs");
+ }
+
+ settings.configVersion = 2;
+ }
+
+ if (currentVersion < 3) {
+ console.info("Migrating settings from version", currentVersion, "to version 3");
+ console.info("Per-widget controlCenterButton config now supported via widgetData properties");
+ settings.configVersion = 3;
+ }
+
+ if (currentVersion < 4) {
+ console.info("Migrating settings from version", currentVersion, "to version 4");
+ console.info("Migrating desktop widgets to unified desktopWidgetInstances");
+
+ var instances = [];
+
+ if (settings.desktopClockEnabled) {
+ var clockPositions = {};
+ if (settings.desktopClockX !== undefined && settings.desktopClockX >= 0) {
+ clockPositions["default"] = {
+ x: settings.desktopClockX,
+ y: settings.desktopClockY,
+ width: settings.desktopClockWidth || 280,
+ height: settings.desktopClockHeight || 180
+ };
+ }
+
+ instances.push({
+ id: "dw_clock_primary",
+ widgetType: "desktopClock",
+ name: "Desktop Clock",
+ enabled: true,
+ config: {
+ style: settings.desktopClockStyle || "analog",
+ transparency: settings.desktopClockTransparency !== undefined ? settings.desktopClockTransparency : 0.8,
+ colorMode: settings.desktopClockColorMode || "primary",
+ customColor: settings.desktopClockCustomColor || "#ffffff",
+ showDate: settings.desktopClockShowDate !== false,
+ showAnalogNumbers: settings.desktopClockShowAnalogNumbers || false,
+ showAnalogSeconds: settings.desktopClockShowAnalogSeconds !== false,
+ displayPreferences: settings.desktopClockDisplayPreferences || ["all"]
+ },
+ positions: clockPositions
+ });
+ }
+
+ if (settings.systemMonitorEnabled) {
+ var sysmonPositions = {};
+ if (settings.systemMonitorX !== undefined && settings.systemMonitorX >= 0) {
+ sysmonPositions["default"] = {
+ x: settings.systemMonitorX,
+ y: settings.systemMonitorY,
+ width: settings.systemMonitorWidth || 320,
+ height: settings.systemMonitorHeight || 480
+ };
+ }
+
+ instances.push({
+ id: "dw_sysmon_primary",
+ widgetType: "systemMonitor",
+ name: "System Monitor",
+ enabled: true,
+ config: {
+ showHeader: settings.systemMonitorShowHeader !== false,
+ transparency: settings.systemMonitorTransparency !== undefined ? settings.systemMonitorTransparency : 0.8,
+ colorMode: settings.systemMonitorColorMode || "primary",
+ customColor: settings.systemMonitorCustomColor || "#ffffff",
+ showCpu: settings.systemMonitorShowCpu !== false,
+ showCpuGraph: settings.systemMonitorShowCpuGraph !== false,
+ showCpuTemp: settings.systemMonitorShowCpuTemp !== false,
+ showGpuTemp: settings.systemMonitorShowGpuTemp || false,
+ gpuPciId: settings.systemMonitorGpuPciId || "",
+ showMemory: settings.systemMonitorShowMemory !== false,
+ showMemoryGraph: settings.systemMonitorShowMemoryGraph !== false,
+ showNetwork: settings.systemMonitorShowNetwork !== false,
+ showNetworkGraph: settings.systemMonitorShowNetworkGraph !== false,
+ showDisk: settings.systemMonitorShowDisk !== false,
+ showTopProcesses: settings.systemMonitorShowTopProcesses || false,
+ topProcessCount: settings.systemMonitorTopProcessCount || 3,
+ topProcessSortBy: settings.systemMonitorTopProcessSortBy || "cpu",
+ layoutMode: settings.systemMonitorLayoutMode || "auto",
+ graphInterval: settings.systemMonitorGraphInterval || 60,
+ displayPreferences: settings.systemMonitorDisplayPreferences || ["all"]
+ },
+ positions: sysmonPositions
+ });
+ }
+
+ var variants = settings.systemMonitorVariants || [];
+ for (var i = 0; i < variants.length; i++) {
+ var v = variants[i];
+ instances.push({
+ id: v.id,
+ widgetType: "systemMonitor",
+ name: v.name || ("System Monitor " + (i + 2)),
+ enabled: true,
+ config: v.config || {},
+ positions: v.positions || {}
+ });
+ }
+
+ settings.desktopWidgetInstances = instances;
+ settings.configVersion = 4;
+ }
+
+ if (currentVersion < 5) {
+ console.info("Migrating settings from version", currentVersion, "to version 5");
+ console.info("Moving sensitive data (weather location, coordinates) to session.json");
+
+ delete settings.weatherLocation;
+ delete settings.weatherCoordinates;
+
+ settings.configVersion = 5;
+ }
+
+ if (currentVersion < 6) {
+ console.info("Migrating settings from version", currentVersion, "to version 6");
+
+ if (settings.barElevationEnabled === undefined) {
+ var legacyBars = Array.isArray(settings.barConfigs) ? settings.barConfigs : [];
+ var hadLegacyBarShadowEnabled = false;
+ for (var j = 0; j < legacyBars.length; j++) {
+ var legacyIntensity = Number(legacyBars[j] && legacyBars[j].shadowIntensity);
+ if (!isNaN(legacyIntensity) && legacyIntensity > 0) {
+ hadLegacyBarShadowEnabled = true;
+ break;
+ }
+ }
+ settings.barElevationEnabled = hadLegacyBarShadowEnabled;
+ }
+
+ settings.configVersion = 6;
+ }
+
+ return settings;
+}
+
+function cleanup(fileText) {
+ var getValidKeys = SpecModule.getValidKeys;
+ if (!fileText || !fileText.trim()) return;
+
+ try {
+ var settings = JSON.parse(fileText);
+ var validKeys = getValidKeys();
+ var needsSave = false;
+
+ for (var key in settings) {
+ if (validKeys.indexOf(key) < 0) {
+ delete settings[key];
+ needsSave = true;
+ }
+ }
+
+ return needsSave ? JSON.stringify(settings, null, 2) : null;
+ } catch (e) {
+ console.warn("SettingsData: Failed to cleanup unused keys:", e.message);
+ return null;
+ }
+}