Files
dotfiles/fedora/quickshell/control-center/Settings.qml
2026-07-26 16:51:25 +03:00

83 lines
3.2 KiB
QML

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: []
}
}
}