diff options
Diffstat (limited to 'notifications')
| -rw-r--r-- | notifications/Balloons.qml | 15 | ||||
| -rw-r--r-- | notifications/README.md | 3 |
2 files changed, 17 insertions, 1 deletions
diff --git a/notifications/Balloons.qml b/notifications/Balloons.qml index abeb13a..8574f9d 100644 --- a/notifications/Balloons.qml +++ b/notifications/Balloons.qml @@ -46,6 +46,19 @@ Scope { // silent. seen is rebuilt from the queue each time, so it never grows. property var seen: ({}) property bool primed: false + // Quiet mutes every sound and leaves the balloons, as it does for the + // Claude and opencode hooks. Read from the status registry's file, like + // Notify's dnd, so this shell never instantiates Status and its writes. + property bool quiet: false + FileView { + id: quietFile + path: (Quickshell.env("XDG_RUNTIME_DIR") || "/tmp") + "/status.quiet" + watchChanges: true + printErrors: false + onFileChanged: reload() + onLoaded: root.quiet = quietFile.text().trim() === "1" + onLoadFailed: root.quiet = false + } Connections { target: Notify function onQueueChanged() { @@ -61,7 +74,7 @@ Scope { } root.seen = next; root.primed = true; - if (file !== "") { + if (file !== "" && !root.quiet) { // ponytail: one player, a new sound cuts the last; a queue of // sounds if bursts ever need every one heard. player.command = ["pw-play", file]; diff --git a/notifications/README.md b/notifications/README.md index 19ad41f..24be81b 100644 --- a/notifications/README.md +++ b/notifications/README.md @@ -24,6 +24,9 @@ the app's own `sound`, then `sounds[urgency]` from the config. A restart records the queue without playing it. There is one player, so a new sound cuts the last. +The status registry's quiet mode (`status.quiet`) silences every sound and +leaves the balloons, as it does for the Claude and opencode hooks. + ## The files are the interface $XDG_RUNTIME_DIR/notifyd/queue.json the live queue |
