Files
dots-hyprland/dots/.config/quickshell/ii/modules/common/models/hyprland/HyprlandConfigOption.qml
T
2026-03-19 12:39:12 +01:00

64 lines
1.7 KiB
QML

pragma ComponentBehavior: Bound
import QtQml
import QtQuick
import Quickshell.Io
import qs.services
import "../"
NestableObject {
id: root
required property string key
property alias fetching: fetchProc.running
property bool set
property var value
Component.onCompleted: fetch()
Connections {
target: HyprlandConfig
function onReloaded() {
root.fetch();
}
}
function fetch() {
fetchProc.command = fetchProc.baseCommand.concat([root.key]);
fetchProc.running = true;
}
function setValue(newValue) {
HyprlandConfig.set(root.key, newValue)
}
function reset() {
HyprlandConfig.reset(root.key)
}
Process {
id: fetchProc
property list<string> baseCommand: ["hyprctl", "getoption", "-j"]
stdout: StdioCollector {
onStreamFinished: {
if (text == "no such option")
return;
try {
const obj = JSON.parse(text);
// Note that the value is returned as "<data type>": <value>
// It's the only field that isn't always in the same key so we put it in an else
for (const key in obj) {
if (key == "option")
continue;
else if (key == "set")
root.set = obj[key];
else
root.value = obj[key];
}
} catch (e) {
console.log(`[HyprlandConfigOption] Failed to fetch option "${root.key}":\n - Output: ${text.trim()}\n - Error: ${e}`);
}
}
}
}
}