diff options
| author | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
|---|---|---|
| committer | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
| commit | 3462bcc46ecf74f576ea4397f16492c16bd75b10 (patch) | |
| tree | c5ab7aef4498647e057bda8d49c11e5f9dda74c9 /raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js | |
| parent | 56616f693b4f263cbf0d47da43b67424efa6022d (diff) | |
| download | RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.tar.gz RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.zip | |
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js | 553 |
1 files changed, 553 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js b/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js new file mode 100644 index 0000000..056545e --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Common/settings/SettingsSpec.js @@ -0,0 +1,553 @@ +.pragma library + +function percentToUnit(v) { + if (v === undefined || v === null) return undefined; + return v > 1 ? v / 100 : v; +} + +var SPEC = { + currentThemeName: { def: "raveos", onChange: "applyStoredTheme" }, + currentThemeCategory: { def: "generic" }, + customThemeFile: { def: "" }, + registryThemeVariants: { def: {} }, + matugenScheme: { def: "scheme-tonal-spot", onChange: "regenSystemThemes" }, + matugenContrast: { def: 0, onChange: "regenSystemThemes" }, + runUserMatugenTemplates: { def: true, onChange: "regenSystemThemes" }, + matugenTargetMonitor: { def: "", onChange: "regenSystemThemes" }, + + popupTransparency: { def: 1.0, coerce: percentToUnit }, + dockTransparency: { def: 1.0, coerce: percentToUnit }, + + widgetBackgroundColor: { def: "sch" }, + widgetColorMode: { def: "default" }, + controlCenterTileColorMode: { def: "primary" }, + buttonColorMode: { def: "primary" }, + cornerRadius: { def: 16, onChange: "updateCompositorLayout" }, + niriLayoutGapsOverride: { def: -1, onChange: "updateCompositorLayout" }, + niriLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" }, + niriLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" }, + hyprlandLayoutGapsOverride: { def: -1, onChange: "updateCompositorLayout" }, + hyprlandLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" }, + hyprlandLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" }, + mangoLayoutGapsOverride: { def: -1, onChange: "updateCompositorLayout" }, + mangoLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" }, + mangoLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" }, + + firstDayOfWeek: { def: -1 }, + showWeekNumber: { def: false }, + use24HourClock: { def: true }, + showSeconds: { def: false }, + padHours12Hour: { def: false }, + useFahrenheit: { def: false }, + windSpeedUnit: { def: "kmh" }, + nightModeEnabled: { def: false }, + animationSpeed: { def: 1 }, + customAnimationDuration: { def: 500 }, + syncComponentAnimationSpeeds: { def: true }, + popoutAnimationSpeed: { def: 1 }, + popoutCustomAnimationDuration: { def: 150 }, + modalAnimationSpeed: { def: 1 }, + modalCustomAnimationDuration: { def: 150 }, + enableRippleEffects: { def: true }, + m3ElevationEnabled: { def: true }, + m3ElevationIntensity: { def: 12 }, + m3ElevationOpacity: { def: 30 }, + m3ElevationColorMode: { def: "default" }, + m3ElevationLightDirection: { def: "top" }, + m3ElevationCustomColor: { def: "#000000" }, + modalElevationEnabled: { def: true }, + popoutElevationEnabled: { def: true }, + barElevationEnabled: { def: true }, + blurEnabled: { def: false }, + blurBorderColor: { def: "outline" }, + blurBorderCustomColor: { def: "#ffffff" }, + blurBorderOpacity: { def: 1.0, coerce: percentToUnit }, + wallpaperFillMode: { def: "Fill" }, + blurredWallpaperLayer: { def: false }, + blurWallpaperOnOverview: { def: false }, + + showLauncherButton: { def: true }, + showWorkspaceSwitcher: { def: true }, + showFocusedWindow: { def: true }, + showWeather: { def: true }, + showMusic: { def: true }, + showClipboard: { def: true }, + showCpuUsage: { def: true }, + showMemUsage: { def: true }, + showCpuTemp: { def: true }, + showGpuTemp: { def: true }, + selectedGpuIndex: { def: 0 }, + enabledGpuPciIds: { def: [] }, + showSystemTray: { def: true }, + showClock: { def: true }, + showNotificationButton: { def: true }, + showBattery: { def: true }, + showControlCenterButton: { def: true }, + showCapsLockIndicator: { def: true }, + + controlCenterShowNetworkIcon: { def: true }, + controlCenterShowBluetoothIcon: { def: true }, + controlCenterShowAudioIcon: { def: true }, + controlCenterShowAudioPercent: { def: false }, + controlCenterShowVpnIcon: { def: true }, + controlCenterShowBrightnessIcon: { def: false }, + controlCenterShowBrightnessPercent: { def: false }, + controlCenterShowMicIcon: { def: false }, + controlCenterShowMicPercent: { def: false }, + controlCenterShowBatteryIcon: { def: false }, + controlCenterShowPrinterIcon: { def: false }, + controlCenterShowScreenSharingIcon: { def: true }, + + showPrivacyButton: { def: true }, + privacyShowMicIcon: { def: false }, + privacyShowCameraIcon: { def: false }, + privacyShowScreenShareIcon: { def: false }, + + controlCenterWidgets: { + def: [ + { id: "volumeSlider", enabled: true, width: 50 }, + { id: "brightnessSlider", enabled: true, width: 50 }, + { id: "wifi", enabled: true, width: 50 }, + { id: "bluetooth", enabled: true, width: 50 }, + { id: "audioOutput", enabled: true, width: 50 }, + { id: "audioInput", enabled: true, width: 50 }, + { id: "nightMode", enabled: true, width: 50 }, + { id: "darkMode", enabled: true, width: 50 } + ] + }, + + showWorkspaceIndex: { def: false }, + showWorkspaceName: { def: false }, + showWorkspacePadding: { def: false }, + workspaceScrolling: { def: false }, + showWorkspaceApps: { def: false }, + workspaceDragReorder: { def: true }, + maxWorkspaceIcons: { def: 3 }, + workspaceAppIconSizeOffset: { def: 0 }, + groupWorkspaceApps: { def: true }, + workspaceFollowFocus: { def: false }, + showOccupiedWorkspacesOnly: { def: false }, + reverseScrolling: { def: false }, + dwlShowAllTags: { def: false }, + workspaceActiveAppHighlightEnabled: { def: false }, + workspaceColorMode: { def: "default" }, + workspaceOccupiedColorMode: { def: "none" }, + workspaceUnfocusedColorMode: { def: "default" }, + workspaceUrgentColorMode: { def: "default" }, + workspaceFocusedBorderEnabled: { def: false }, + workspaceFocusedBorderColor: { def: "primary" }, + workspaceFocusedBorderThickness: { def: 2 }, + workspaceNameIcons: { def: {} }, + waveProgressEnabled: { def: true }, + scrollTitleEnabled: { def: true }, + mediaAdaptiveWidthEnabled: { def: true }, + audioVisualizerEnabled: { def: true }, + audioScrollMode: { def: "volume" }, + audioWheelScrollAmount: { def: 5 }, + clockCompactMode: { def: false }, + focusedWindowCompactMode: { def: false }, + runningAppsCompactMode: { def: true }, + barMaxVisibleApps: { def: 0 }, + barMaxVisibleRunningApps: { def: 0 }, + barShowOverflowBadge: { def: true }, + appsDockHideIndicators: { def: false }, + appsDockColorizeActive: { def: false }, + appsDockActiveColorMode: { def: "primary" }, + appsDockEnlargeOnHover: { def: false }, + appsDockEnlargePercentage: { def: 125 }, + appsDockIconSizePercentage: { def: 100 }, + keyboardLayoutNameCompactMode: { def: false }, + runningAppsCurrentWorkspace: { def: true }, + runningAppsGroupByApp: { def: false }, + runningAppsCurrentMonitor: { def: false }, + appIdSubstitutions: { + def: [ + { pattern: "Spotify", replacement: "spotify", type: "exact" }, + { pattern: "beepertexts", replacement: "beeper", type: "exact" }, + { pattern: "home assistant desktop", replacement: "homeassistant-desktop", type: "exact" }, + { pattern: "com.transmissionbt.transmission", replacement: "transmission-gtk", type: "contains" }, + { pattern: "^steam_app_(\\d+)$", replacement: "steam_icon_$1", type: "regex" } + ] + }, + centeringMode: { def: "index" }, + clockDateFormat: { def: "" }, + lockDateFormat: { def: "" }, + greeterRememberLastSession: { def: true }, + greeterRememberLastUser: { def: true }, + greeterEnableFprint: { def: false, onChange: "scheduleAuthApply" }, + greeterEnableU2f: { def: false, onChange: "scheduleAuthApply" }, + greeterWallpaperPath: { def: "" }, + greeterUse24HourClock: { def: true }, + greeterShowSeconds: { def: false }, + greeterPadHours12Hour: { def: false }, + greeterLockDateFormat: { def: "" }, + greeterFontFamily: { def: "" }, + greeterWallpaperFillMode: { def: "" }, + mediaSize: { def: 1 }, + + appLauncherViewMode: { def: "list" }, + spotlightModalViewMode: { def: "list" }, + browserPickerViewMode: { def: "grid" }, + browserUsageHistory: { def: {} }, + appPickerViewMode: { def: "grid" }, + filePickerUsageHistory: { def: {} }, + sortAppsAlphabetically: { def: false }, + appLauncherGridColumns: { def: 4 }, + spotlightCloseNiriOverview: { def: true }, + rememberLastQuery: { def: false }, + spotlightSectionViewModes: { def: {} }, + appDrawerSectionViewModes: { def: {} }, + niriOverviewOverlayEnabled: { def: true }, + dankLauncherV2Size: { def: "compact" }, + dankLauncherV2BorderEnabled: { def: false }, + dankLauncherV2BorderThickness: { def: 2 }, + dankLauncherV2BorderColor: { def: "primary" }, + dankLauncherV2ShowFooter: { def: true }, + dankLauncherV2UnloadOnClose: { def: false }, + dankLauncherV2IncludeFilesInAll: { def: false }, + dankLauncherV2IncludeFoldersInAll: { def: false }, + + useAutoLocation: { def: false }, + weatherEnabled: { def: true }, + + networkPreference: { def: "auto" }, + + iconTheme: { def: "System Default", onChange: "applyStoredIconTheme" }, + availableIconThemes: { def: ["System Default"], persist: false }, + systemDefaultIconTheme: { def: "", persist: false }, + qt5ctAvailable: { def: false, persist: false }, + qt6ctAvailable: { def: false, persist: false }, + gtkAvailable: { def: false, persist: false }, + + cursorSettings: { def: { theme: "System Default", size: 24, niri: { hideWhenTyping: false, hideAfterInactiveMs: 0 }, hyprland: { hideOnKeyPress: false, hideOnTouch: false, inactiveTimeout: 0 }, dwl: { cursorHideTimeout: 0 } }, onChange: "updateCompositorCursor" }, + availableCursorThemes: { def: ["System Default"], persist: false }, + systemDefaultCursorTheme: { def: "", persist: false }, + + launcherLogoMode: { def: "os" }, + launcherLogoCustomPath: { def: "" }, + launcherLogoColorOverride: { def: "" }, + launcherLogoColorInvertOnMode: { def: false }, + launcherLogoBrightness: { def: 0.5 }, + launcherLogoContrast: { def: 1 }, + launcherLogoSizeOffset: { def: 0 }, + + fontFamily: { def: "Inter Variable" }, + monoFontFamily: { def: "Fira Code" }, + fontWeight: { def: 400 }, + fontScale: { def: 1.0 }, + + notepadUseMonospace: { def: true }, + notepadFontFamily: { def: "" }, + notepadFontSize: { def: 14 }, + notepadShowLineNumbers: { def: false }, + notepadTransparencyOverride: { def: -1 }, + notepadLastCustomTransparency: { def: 0.7 }, + + soundsEnabled: { def: true }, + useSystemSoundTheme: { def: false }, + soundLogin: { def: false }, + soundNewNotification: { def: true }, + soundVolumeChanged: { def: true }, + soundPluggedIn: { def: true }, + + acMonitorTimeout: { def: 0 }, + acLockTimeout: { def: 0 }, + acSuspendTimeout: { def: 0 }, + acSuspendBehavior: { def: 0 }, + acProfileName: { def: "" }, + batteryMonitorTimeout: { def: 0 }, + batteryLockTimeout: { def: 0 }, + batterySuspendTimeout: { def: 0 }, + batterySuspendBehavior: { def: 0 }, + batteryProfileName: { def: "" }, + batteryChargeLimit: { def: 100 }, + lockBeforeSuspend: { def: false }, + loginctlLockIntegration: { def: true }, + fadeToLockEnabled: { def: true }, + fadeToLockGracePeriod: { def: 5 }, + fadeToDpmsEnabled: { def: true }, + fadeToDpmsGracePeriod: { def: 5 }, + launchPrefix: { def: "" }, + brightnessDevicePins: { def: {} }, + wifiNetworkPins: { def: {} }, + bluetoothDevicePins: { def: {} }, + audioInputDevicePins: { def: {} }, + audioOutputDevicePins: { def: {} }, + + gtkThemingEnabled: { def: false, onChange: "regenSystemThemes" }, + qtThemingEnabled: { def: false, onChange: "regenSystemThemes" }, + syncModeWithPortal: { def: true }, + terminalsAlwaysDark: { def: false, onChange: "regenSystemThemes" }, + + muxType: { def: "tmux" }, + muxUseCustomCommand: { def: false }, + muxCustomCommand: { def: "" }, + muxSessionFilter: { def: "" }, + + runDmsMatugenTemplates: { def: true }, + matugenTemplateGtk: { def: true }, + matugenTemplateNiri: { def: true }, + matugenTemplateHyprland: { def: true }, + matugenTemplateMangowc: { def: true }, + matugenTemplateQt5ct: { def: true }, + matugenTemplateQt6ct: { def: true }, + matugenTemplateFirefox: { def: true }, + matugenTemplatePywalfox: { def: true }, + matugenTemplateZenBrowser: { def: true }, + matugenTemplateVesktop: { def: true }, + matugenTemplateEquibop: { def: true }, + matugenTemplateGhostty: { def: true }, + matugenTemplateKitty: { def: true }, + matugenTemplateFoot: { def: true }, + matugenTemplateAlacritty: { def: true }, + matugenTemplateNeovim: { def: false }, + matugenTemplateWezterm: { def: true }, + matugenTemplateDgop: { def: true }, + matugenTemplateKcolorscheme: { def: true }, + matugenTemplateVscode: { def: true }, + matugenTemplateEmacs: { def: true }, + matugenTemplateZed: { def: true }, + + matugenTemplateNeovimSettings: { + def: { + dark: { baseTheme: "github_dark", harmony: 0.5 }, + light: { baseTheme: "github_light", harmony: 0.5 } + } + }, + matugenTemplateNeovimSetBackground: { def: true }, + + showDock: { def: false }, + dockAutoHide: { def: false }, + dockSmartAutoHide: { def: false }, + dockGroupByApp: { def: false }, + dockRestoreSpecialWorkspaceOnClick: { def: false }, + dockOpenOnOverview: { def: false }, + dockPosition: { def: 1 }, + dockSpacing: { def: 4 }, + dockBottomGap: { def: 0 }, + dockMargin: { def: 0 }, + dockIconSize: { def: 40 }, + dockIndicatorStyle: { def: "circle" }, + dockBorderEnabled: { def: false }, + dockBorderColor: { def: "surfaceText" }, + dockBorderOpacity: { def: 1.0, coerce: percentToUnit }, + dockBorderThickness: { def: 1 }, + dockIsolateDisplays: { def: false }, + dockLauncherEnabled: { def: false }, + dockLauncherLogoMode: { def: "apps" }, + dockLauncherLogoCustomPath: { def: "" }, + dockLauncherLogoColorOverride: { def: "" }, + dockLauncherLogoSizeOffset: { def: 0 }, + dockLauncherLogoBrightness: { def: 0.5, coerce: percentToUnit }, + dockLauncherLogoContrast: { def: 1, coerce: percentToUnit }, + dockMaxVisibleApps: { def: 0 }, + dockMaxVisibleRunningApps: { def: 0 }, + dockShowOverflowBadge: { def: true }, + + notificationOverlayEnabled: { def: false }, + notificationPopupShadowEnabled: { def: true }, + notificationPopupPrivacyMode: { def: false }, + overviewRows: { def: 2, persist: false }, + overviewColumns: { def: 5, persist: false }, + overviewScale: { def: 0.16, persist: false }, + + modalDarkenBackground: { def: true }, + + lockScreenShowPowerActions: { def: true }, + lockScreenShowSystemIcons: { def: true }, + lockScreenShowTime: { def: true }, + lockScreenShowDate: { def: true }, + lockScreenShowProfileImage: { def: true }, + lockScreenShowPasswordField: { def: true }, + lockScreenShowMediaPlayer: { def: true }, + lockScreenPowerOffMonitorsOnLock: { def: false }, + lockAtStartup: { def: false }, + enableFprint: { def: false, onChange: "scheduleAuthApply" }, + maxFprintTries: { def: 15 }, + enableU2f: { def: false, onChange: "scheduleAuthApply" }, + u2fMode: { def: "or" }, + lockScreenActiveMonitor: { def: "all" }, + lockScreenInactiveColor: { def: "#000000" }, + lockScreenNotificationMode: { def: 0 }, + lockScreenVideoEnabled: { def: false }, + lockScreenVideoPath: { def: "" }, + lockScreenVideoCycling: { def: false }, + hideBrightnessSlider: { def: false }, + + notificationTimeoutLow: { def: 5000 }, + notificationTimeoutNormal: { def: 5000 }, + notificationTimeoutCritical: { def: 0 }, + notificationCompactMode: { def: false }, + notificationPopupPosition: { def: 0 }, + notificationAnimationSpeed: { def: 1 }, + notificationCustomAnimationDuration: { def: 400 }, + notificationHistoryEnabled: { def: true }, + notificationHistoryMaxCount: { def: 50 }, + notificationHistoryMaxAgeDays: { def: 7 }, + notificationHistorySaveLow: { def: true }, + notificationHistorySaveNormal: { def: true }, + notificationHistorySaveCritical: { def: true }, + notificationRules: { def: [] }, + notificationFocusedMonitor: { def: false }, + + osdAlwaysShowValue: { def: false }, + osdPosition: { def: 5 }, + osdVolumeEnabled: { def: true }, + osdMediaVolumeEnabled: { def: true }, + osdMediaPlaybackEnabled: { def: false }, + osdBrightnessEnabled: { def: true }, + osdIdleInhibitorEnabled: { def: true }, + osdMicMuteEnabled: { def: true }, + osdCapsLockEnabled: { def: true }, + osdPowerProfileEnabled: { def: false }, + osdAudioOutputEnabled: { def: true }, + + powerActionConfirm: { def: true }, + powerActionHoldDuration: { def: 0.5 }, + powerMenuActions: { def: ["reboot", "logout", "poweroff", "lock", "suspend", "restart"] }, + powerMenuDefaultAction: { def: "logout" }, + powerMenuGridLayout: { def: false }, + customPowerActionLock: { def: "" }, + customPowerActionLogout: { def: "" }, + customPowerActionSuspend: { def: "" }, + customPowerActionHibernate: { def: "" }, + customPowerActionReboot: { def: "" }, + customPowerActionPowerOff: { def: "" }, + + updaterHideWidget: { def: false }, + updaterUseCustomCommand: { def: false }, + updaterCustomCommand: { def: "" }, + updaterTerminalAdditionalParams: { def: "" }, + + displayNameMode: { def: "system" }, + screenPreferences: { def: {} }, + showOnLastDisplay: { def: {} }, + niriOutputSettings: { def: {} }, + hyprlandOutputSettings: { def: {} }, + displayProfiles: { def: {} }, + activeDisplayProfile: { def: {} }, + displayProfileAutoSelect: { def: false }, + displayShowDisconnected: { def: false }, + displaySnapToEdge: { def: true }, + + barConfigs: { + def: [{ + id: "default", + name: "Main Bar", + enabled: true, + position: 0, + screenPreferences: ["all"], + showOnLastDisplay: true, + leftWidgets: ["launcherButton", "workspaceSwitcher", "focusedWindow"], + centerWidgets: ["music", "clock", "weather"], + rightWidgets: ["systemTray", "clipboard", "cpuUsage", "memUsage", "notificationButton", "battery", "controlCenterButton"], + spacing: 4, + innerPadding: 4, + bottomGap: 0, + transparency: 1.0, + widgetTransparency: 1.0, + squareCorners: false, + noBackground: false, + maximizeWidgetIcons: false, + maximizeWidgetText: false, + removeWidgetPadding: false, + widgetPadding: 8, + gothCornersEnabled: false, + gothCornerRadiusOverride: false, + gothCornerRadiusValue: 12, + borderEnabled: false, + borderColor: "surfaceText", + borderOpacity: 1.0, + borderThickness: 1, + widgetOutlineEnabled: false, + widgetOutlineColor: "primary", + widgetOutlineOpacity: 1.0, + widgetOutlineThickness: 1, + fontScale: 1.0, + iconScale: 1.0, + autoHide: false, + autoHideDelay: 250, + showOnWindowsOpen: false, + openOnOverview: false, + visible: true, + popupGapsAuto: true, + popupGapsManual: 4, + maximizeDetection: true, + scrollEnabled: true, + scrollXBehavior: "column", + scrollYBehavior: "workspace", + shadowIntensity: 0, + shadowOpacity: 60, + shadowColorMode: "default", + shadowCustomColor: "#000000", + clickThrough: false + }], onChange: "updateBarConfigs" + }, + + desktopClockEnabled: { def: false }, + desktopClockStyle: { def: "analog" }, + desktopClockTransparency: { def: 0.8, coerce: percentToUnit }, + desktopClockColorMode: { def: "primary" }, + desktopClockCustomColor: { def: "#ffffff" }, + desktopClockShowDate: { def: true }, + desktopClockShowAnalogNumbers: { def: false }, + desktopClockShowAnalogSeconds: { def: true }, + desktopClockX: { def: -1 }, + desktopClockY: { def: -1 }, + desktopClockWidth: { def: 280 }, + desktopClockHeight: { def: 180 }, + desktopClockDisplayPreferences: { def: ["all"] }, + + systemMonitorEnabled: { def: false }, + systemMonitorShowHeader: { def: true }, + systemMonitorTransparency: { def: 0.8, coerce: percentToUnit }, + systemMonitorColorMode: { def: "primary" }, + systemMonitorCustomColor: { def: "#ffffff" }, + systemMonitorShowCpu: { def: true }, + systemMonitorShowCpuGraph: { def: true }, + systemMonitorShowCpuTemp: { def: true }, + systemMonitorShowGpuTemp: { def: false }, + systemMonitorGpuPciId: { def: "" }, + systemMonitorShowMemory: { def: true }, + systemMonitorShowMemoryGraph: { def: true }, + systemMonitorShowNetwork: { def: true }, + systemMonitorShowNetworkGraph: { def: true }, + systemMonitorShowDisk: { def: true }, + systemMonitorShowTopProcesses: { def: false }, + systemMonitorTopProcessCount: { def: 3 }, + systemMonitorTopProcessSortBy: { def: "cpu" }, + systemMonitorGraphInterval: { def: 60 }, + systemMonitorLayoutMode: { def: "auto" }, + systemMonitorX: { def: -1 }, + systemMonitorY: { def: -1 }, + systemMonitorWidth: { def: 320 }, + systemMonitorHeight: { def: 480 }, + systemMonitorDisplayPreferences: { def: ["all"] }, + systemMonitorVariants: { def: [] }, + desktopWidgetPositions: { def: {} }, + desktopWidgetGridSettings: { def: {} }, + + desktopWidgetInstances: { def: [] }, + + desktopWidgetGroups: { def: [] }, + + builtInPluginSettings: { def: {} }, + clipboardEnterToPaste: { def: false }, + + launcherPluginVisibility: { def: {} }, + launcherPluginOrder: { def: [] } +}; + +function getValidKeys() { + return Object.keys(SPEC).filter(function (k) { return SPEC[k].persist !== false; }).concat(["configVersion"]); +} + +function set(root, key, value, saveFn, hooks) { + if (!(key in SPEC)) return; + root[key] = value; + var hookName = SPEC[key].onChange; + if (hookName && hooks && hooks[hookName]) { + hooks[hookName](root); + } + saveFn(); +} |