pragma Singleton import QtQuick import Quickshell import Quickshell.Io QtObject { id: root property var workspaces: ({ enable: true }) property var tray: ({ enable: true }) property var windowTitle: ({ enable: true }) property var clock: ({ enable: true }) property var notifications: ({ enable: true }) property var mpris: ({ enable: true }) property var volume: ({ enable: true }) property var bluetooth: ({ enable: true }) property var backlight: ({ enable: true, step: 5 }) property var network: ({ enable: true }) property var powerProfile: ({ enable: true }) property var idleInhibitor: ({ enable: true }) property var weather: ({ enable: true, args: ["--nerd"] }) property var temperature: ({ enable: true }) property var cpu: ({ enable: true }) property var memory: ({ enable: true }) property var disk: ({ enable: true }) property var battery: ({ enable: true }) property var power: ({ enable: true }) property FileView _file: FileView { path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/modules.json" watchChanges: true onFileChanged: reload() onLoaded: root._apply(text()) } function _apply(raw) { let data; try { data = JSON.parse(raw); } catch (e) { return; } for (const k of Object.keys(data)) { if (!(k in root)) continue; const v = data[k]; if (typeof v === "object" && v !== null) root[k] = Object.assign({}, root[k], v); else if (typeof v === "boolean") root[k] = Object.assign({}, root[k], { enable: v }); } } }