From 9257941fe0faf1d2962d3ccd00117546ccc40205 Mon Sep 17 00:00:00 2001 From: Damocles Date: Wed, 15 Apr 2026 20:40:50 +0200 Subject: [PATCH] fix: default modules to disabled, enable non-configured ones after json load --- modules/Modules.qml | 67 +++++++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/modules/Modules.qml b/modules/Modules.qml index eea208d..9529e6e 100644 --- a/modules/Modules.qml +++ b/modules/Modules.qml @@ -8,90 +8,97 @@ QtObject { id: root property var workspaces: ({ - enable: true + enable: false }) property var tray: ({ - enable: true + enable: false }) property var windowTitle: ({ - enable: true + enable: false }) property var clock: ({ - enable: true + enable: false }) property var notifications: ({ - enable: true, + enable: false, timeout: 3000, maxPopups: 4, maxVisible: 10, maxHistory: -1 }) property var mpris: ({ - enable: true + enable: false }) property var volume: ({ - enable: true + enable: false }) property var bluetooth: ({ - enable: true + enable: false }) property var backlight: ({ - enable: true, + enable: false, step: 5 }) property var network: ({ - enable: true + enable: false }) property var powerProfile: ({ - enable: true + enable: false }) property var idleInhibitor: ({ - enable: true + enable: false }) property var weather: ({ - enable: true, + enable: false, args: ["--nerd"], interval: 3600000 }) property var temperature: ({ - enable: true, + enable: false, warm: 80, hot: 90 }) property var cpu: ({ - enable: true + enable: false }) property var memory: ({ - enable: true + enable: false }) property var disk: ({ - enable: true, + enable: false, interval: 30000 }) property var battery: ({ - enable: true, + enable: false, warning: 25, critical: 15 }) property var privacy: ({ - enable: true + enable: false }) property var screenCorners: ({ - enable: true + enable: false }) property var power: ({ - enable: true + enable: false }) property var backgroundOverlay: ({ - enable: true + enable: false }) property var overviewBackdrop: ({ - enable: true + enable: false }) property var statsDaemon: ({ interval: -1 }) + // All module keys that have an enable flag — used to default-enable anything + // not explicitly mentioned in modules.json + readonly property var _moduleKeys: ["workspaces", "tray", "windowTitle", "clock", "notifications", "mpris", "volume", "bluetooth", "backlight", "network", "powerProfile", "idleInhibitor", "weather", "temperature", "cpu", "memory", "disk", "battery", "privacy", "screenCorners", "power", "backgroundOverlay", "overviewBackdrop"] + + // Fallback: if modules.json doesn't exist, enable everything + Component.onCompleted: _apply("{}") + property FileView _file: FileView { path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/modules.json" watchChanges: true @@ -100,12 +107,20 @@ QtObject { } function _apply(raw) { - let data; + let data = {}; try { data = JSON.parse(raw); - } catch (e) { - return; + } catch (e) {} + + // Enable all modules that aren't explicitly mentioned in the JSON + for (const k of _moduleKeys) { + if (!(k in data)) + root[k] = Object.assign({}, root[k], { + enable: true + }); } + + // Apply JSON overrides for (const k of Object.keys(data)) { if (!(k in root)) continue;