aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/waybar/executable_dismiss-visible.sh
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:29 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:29 +0100
commite331fd63eaa51a51a6af06560bbe226a6d47fa16 (patch)
tree0c6bb57823f1710b297c6e83e618715f6659ca7f /dot_config/waybar/executable_dismiss-visible.sh
parent0af53da3eb2574ca23758e6658b7683bcee4d6da (diff)
downloaddotfiles-e331fd63eaa51a51a6af06560bbe226a6d47fa16.tar.gz
dotfiles-e331fd63eaa51a51a6af06560bbe226a6d47fa16.tar.bz2
dotfiles-e331fd63eaa51a51a6af06560bbe226a6d47fa16.zip
feat(notifications): persistent-pending model + wofi history picker
Notifications now behave like a phone: pop briefly, auto-disappear, and remain "pending" until the user explicitly acknowledges them. The waybar count reflects pending only; idle uses a quieter glyph. State model: pending = ids in mako history/list MINUS dismissed-set state file: $XDG_RUNTIME_DIR/mako-dismissed (per-session id list) Glyph change: idle (0 pending) bell_outline U+F009C has pending bell_ring U+F009E (the previous bell_check_outline U+F11E8 "history present but nothing pending" branch is gone — there is no separate history concept now) Bindings (all now go through wrappers that maintain the dismissed-set): Super+n dismiss top visible + mark seen Super+Shift+n dismiss all visible + mark seen Super+Ctrl+n restore most recent + pop it from dismissed-set XF86Favorites history picker (rewritten on wofi) History picker (dot_config/waybar/executable_mako-history.py): - wofi --hide-search: arrow-only navigation, no fuzzy input - lines tagged [pending] / [seen] with app + summary + body - Enter re-emit via notify-send (re-shows the bubble) + mark seen - Alt-c copy "summary\nbody" to clipboard via wl-copy - Alt-d mark seen without re-showing - empty history shows a sentinel, no-op on Enter New scripts: executable_dismiss-visible.sh capture id(s) then makoctl dismiss executable_restore-pending.sh capture top-of-history id, restore, then drop that id from dismissed-set executable_mako-history.py Python rewrite (parses makoctl text output, drives wofi) Other: meta/wayland.txt add wofi (only used by this picker) dot_config/wofi/style.css minimal gruvbox style; hides input row as belt-and-suspenders even though --hide-search already does it
Diffstat (limited to 'dot_config/waybar/executable_dismiss-visible.sh')
-rw-r--r--dot_config/waybar/executable_dismiss-visible.sh33
1 files changed, 33 insertions, 0 deletions
diff --git a/dot_config/waybar/executable_dismiss-visible.sh b/dot_config/waybar/executable_dismiss-visible.sh
new file mode 100644
index 0000000..98d240b
--- /dev/null
+++ b/dot_config/waybar/executable_dismiss-visible.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Dismiss currently-visible mako notifications and record their ids in the
+# shared "dismissed" set so they don't linger as pending in waybar.
+#
+# Usage: dismiss-visible.sh [top|all] (default: top)
+#
+# Coordinates with mako-status.sh and mako-history.py via
+# $XDG_RUNTIME_DIR/mako-dismissed (one id per line, per-session).
+
+set -eu
+
+mode=${1:-top}
+state=${XDG_RUNTIME_DIR:-/tmp}/mako-dismissed
+mkdir -p "$(dirname "$state")"
+: >>"$state"
+
+command -v makoctl >/dev/null 2>&1 || exit 0
+
+case "$mode" in
+ top)
+ id=$(makoctl list -f '%i' 2>/dev/null | head -n1 || true)
+ [ -n "${id:-}" ] && printf '%s\n' "$id" >>"$state"
+ makoctl dismiss
+ ;;
+ all)
+ makoctl list -f '%i' 2>/dev/null >>"$state" || true
+ makoctl dismiss --all
+ ;;
+ *)
+ echo "usage: $0 [top|all]" >&2
+ exit 2
+ ;;
+esac