aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/appearance/Hypridle.qml
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/modules/appearance/Hypridle.qml')
-rw-r--r--desktop/modules/appearance/Hypridle.qml8
1 files changed, 7 insertions, 1 deletions
diff --git a/desktop/modules/appearance/Hypridle.qml b/desktop/modules/appearance/Hypridle.qml
index a1d3ecd..5f03c35 100644
--- a/desktop/modules/appearance/Hypridle.qml
+++ b/desktop/modules/appearance/Hypridle.qml
@@ -30,6 +30,10 @@ Singleton {
property string tail: ""
property string notice: ""
property bool loaded: false
+ // The file as last read or written: dirty is what save() would write
+ // differing from it. Discard is refresh().
+ property string saved: ""
+ readonly property bool dirty: root.loaded && root.serialize(root.prefix, root.listeners, root.tail) !== root.saved
function getField(body, key) {
const m = body.match(new RegExp(`^\\s*${key}\\s*=\\s*(.+?)\\s*$`, "m"));
@@ -146,6 +150,7 @@ listener {
root.prefix = p.prefix;
root.listeners = p.listeners;
root.tail = p.tail;
+ root.saved = root.serialize(p.prefix, p.listeners, p.tail);
root.loaded = true;
}
}
@@ -155,7 +160,8 @@ listener {
function save() {
if (!root.loaded) return; // not loaded yet: writing would truncate the file
- confFile.setText(root.serialize(root.prefix, root.listeners, root.tail));
+ root.saved = root.serialize(root.prefix, root.listeners, root.tail);
+ confFile.setText(root.saved);
Quickshell.execDetached(["sh", "-c", "pkill -x hypridle; setsid -f hypridle"]);
root.notice = "saved; idle timers reset";
}