aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-15 13:55:43 +0200
committerDanilo M. <danix@danix.xyz>2026-09-15 13:55:43 +0200
commitcbe4f39ab8b81f247b587347343297631cc020dc (patch)
treef5d18bb6126999b0eac93167d5f23d76bcbe2eaa /scripts
parentbcf15590f9e43f2d8978cf7cccfbdf3bb66e376f (diff)
downloadnotifyd-cbe4f39ab8b81f247b587347343297631cc020dc.tar.gz
notifyd-cbe4f39ab8b81f247b587347343297631cc020dc.zip
feat: add notify-snooze.sh
Snooze is a file the balloon renderer reads, not daemon state: the notification still arrives, lists and files, only its balloon is withheld. The last used value is kept under XDG state so a reboot does not forget it.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/notify-snooze.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/notify-snooze.sh b/scripts/notify-snooze.sh
new file mode 100755
index 0000000..1289a9f
--- /dev/null
+++ b/scripts/notify-snooze.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# Suppress every notification balloon for a number of minutes. The balloon
+# renderer reads the file and withholds them; the daemon is untouched. This is
+# deliberate: the notification still arrives, still enters the drawer's list
+# and still reaches history, only its balloon is held back.
+#
+# notify-snooze.sh 30
+# notify-snooze.sh off
+
+set -u
+
+dir="${XDG_RUNTIME_DIR:-/tmp}/notifyd"
+last="${HOME}/.local/state/notify-snooze.minutes"
+
+case "${1:-}" in
+ off)
+ rm -f "$dir/snooze"
+ exit 0
+ ;;
+ ''|*[!0-9]*)
+ printf 'usage: %s <minutes|off>\n' "${0##*/}" >&2
+ exit 1
+ ;;
+esac
+
+mkdir -p "$dir" "$(dirname "$last")"
+printf '%s\n' "$(( $(date +%s) + $1 * 60 ))" > "$dir/snooze.tmp"
+mv "$dir/snooze.tmp" "$dir/snooze"
+printf '%s\n' "$1" > "$last.tmp"
+mv "$last.tmp" "$last"