From 3462bcc46ecf74f576ea4397f16492c16bd75b10 Mon Sep 17 00:00:00 2001 From: Nippy Date: Fri, 8 May 2026 19:50:49 +0200 Subject: raveos update --- .../dms/Common/settings/SettingsStore.js | 275 +++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js (limited to 'raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsStore.js') 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; + } +} -- cgit v1.3