import QtQuick import Quickshell import Quickshell.Io QtObject { id: root property alias temperatureInterval: values.temperatureInterval property alias temperatureWarning: values.temperatureWarning property alias temperatureCritical: values.temperatureCritical property alias panelStyle: values.panelStyle property alias panelWidth: values.panelWidth property alias panelRadius: values.panelRadius property alias panelOpacity: values.panelOpacity property alias panelOpenOnCorner: values.panelOpenOnCorner property alias notificationBadge: values.notificationBadge property alias notificationPosition: values.notificationPosition property alias notificationPopupDuration: values.notificationPopupDuration property alias barModules: values.barModules property alias hiddenBarModules: values.hiddenBarModules readonly property var defaultBarModules: [ "weather", "mail", "media", "notifications", "gpu", "cpu", "memory", "disk", "keyboard", "audio", "calendar", "settings", "tray" ] function visibleBarModules() { const configured = Array.isArray(root.barModules) ? root.barModules : root.defaultBarModules; const hidden = Array.isArray(root.hiddenBarModules) ? root.hiddenBarModules : []; return configured.filter(module => root.defaultBarModules.indexOf(module) >= 0 && hidden.indexOf(module) < 0); } function setBarModules(modules) { root.barModules = modules.filter(module => root.defaultBarModules.indexOf(module) >= 0); } function setModuleVisible(module, visible) { let hidden = Array.isArray(root.hiddenBarModules) ? root.hiddenBarModules.slice() : []; const index = hidden.indexOf(module); if (visible && index >= 0) hidden.splice(index, 1); if (!visible && index < 0) hidden.push(module); root.hiddenBarModules = hidden; } function setTemperatureWarning(value) { root.temperatureWarning = Math.min(value, root.temperatureCritical - 1); } function setTemperatureCritical(value) { root.temperatureCritical = Math.max(value, root.temperatureWarning + 1); } property FileView settingsFile: FileView { path: Quickshell.statePath("control-center.json") printErrors: false watchChanges: true onFileChanged: reload() onAdapterUpdated: writeAdapter() JsonAdapter { id: values property int temperatureInterval: 2000 property int temperatureWarning: 75 property int temperatureCritical: 90 property string panelStyle: "cards" property int panelWidth: 470 property int panelRadius: 24 property real panelOpacity: 1.0 property bool panelOpenOnCorner: false property bool notificationBadge: true property string notificationPosition: "top-right" property int notificationPopupDuration: 5000 property var barModules: [ "weather", "mail", "media", "notifications", "gpu", "cpu", "memory", "disk", "keyboard", "audio", "calendar", "settings", "tray" ] property var hiddenBarModules: [] } } }