53 lines
1.7 KiB
QML
53 lines
1.7 KiB
QML
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 });
|
|
}
|
|
}
|
|
}
|