aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/modules')
-rw-r--r--desktop/modules/monitors/MonitorsModule.qml10
1 files changed, 8 insertions, 2 deletions
diff --git a/desktop/modules/monitors/MonitorsModule.qml b/desktop/modules/monitors/MonitorsModule.qml
index 3ed9b22..94ec8e4 100644
--- a/desktop/modules/monitors/MonitorsModule.qml
+++ b/desktop/modules/monitors/MonitorsModule.qml
@@ -62,7 +62,7 @@ Module {
stdout: StdioCollector {
onStreamFinished: {
let list;
- try { list = JSON.parse(this.text); } catch (e) { return; }
+ try { list = JSON.parse(this.text); } catch (e) { mm.error = "Cannot read hyprctl monitors."; return; }
mm.orig = list.map(M.draft);
mm.draft = list.map(M.draft);
}
@@ -89,6 +89,8 @@ Module {
}
function apply() {
+ // A refusal's reload that never reported must not eat a later one.
+ mm.skipRead = false;
mm.error = "";
mm.notice = "";
applyProc.command = ["sh", "-c", 'for l; do hyprctl eval "$l" || exit 7; done', "sh"]
@@ -124,7 +126,8 @@ Module {
tick.stop();
mm.pending = false;
fv.setText(M.file(mm.draft));
- mm.notice = "saved";
+ // The draft is what is live; not left to the autoreload's read.
+ mm.orig = JSON.parse(JSON.stringify(mm.draft));
}
// Also what leaving the page while pending does.
@@ -138,6 +141,9 @@ Module {
path: mm.file
atomicWrites: true
printErrors: false
+ onSaved: mm.notice = "saved"
+ // Live but not on disk: the next reload would bring the old file back.
+ onSaveFailed: err => mm.error = "Cannot write monitors.lua: " + FileViewError.toString(err)
}
Component.onCompleted: mm.read()