aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/waybar
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:35 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:35 +0100
commit54eacef87b906835f9778d9c4b02128398bf88d0 (patch)
tree3d6c82d81c4e7b43fcb8b5b628b038eccac5fad2 /dot_config/waybar
parentbd50d1c05aceb1eecffcb479ab2bf8baa56fe078 (diff)
downloaddotfiles-54eacef87b906835f9778d9c4b02128398bf88d0.tar.gz
dotfiles-54eacef87b906835f9778d9c4b02128398bf88d0.tar.bz2
dotfiles-54eacef87b906835f9778d9c4b02128398bf88d0.zip
feat(lostfiles): weekly unowned-files refresh + waybar reminder
Wiring (mirrors arch-audit, with weekly cadence and Nice=19/idle I/O): lostfiles.timer (weekly, Persistent=true, RandomizedDelaySec=1h) → lostfiles.service → /run/lostfiles.txt (default mode — strict produces too many false positives for a passive reminder) → custom/lostfiles waybar module (interval 600s) → mako 'normal' once/7d while count > 0 → on-click: `ghostty -e nvim -R /run/lostfiles.txt` Default mode (no `strict` argument) is intentional: it already filters the package's curated false-positive list at /etc/lostfiles.conf, which is what we want for a low-noise weekly nudge. Switching to `strict` is a one-line change in lostfiles.service if signal-vs-noise tilts later.
Diffstat (limited to 'dot_config/waybar')
-rwxr-xr-xdot_config/waybar/executable_lostfiles-status.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/dot_config/waybar/executable_lostfiles-status.sh b/dot_config/waybar/executable_lostfiles-status.sh
new file mode 100755
index 0000000..f5f1099
--- /dev/null
+++ b/dot_config/waybar/executable_lostfiles-status.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Waybar custom/lostfiles: shows count of filesystem entries not owned
+# by any pacman package (and not on lostfiles' built-in safe-list).
+# Source of truth is /run/lostfiles.txt, refreshed weekly by
+# lostfiles.timer (system scope). Hidden when zero or report missing.
+#
+# Mako throttled to once per 7d via a stamp in $XDG_RUNTIME_DIR — the
+# report itself only changes weekly so anything more frequent would
+# re-fire on the same data.
+
+set -eu
+
+REPORT=/run/lostfiles.txt
+STATE=${XDG_RUNTIME_DIR:-/tmp}/waybar-lostfiles-notified
+
+emit_empty() {
+ printf '{"text":"","class":"fresh","tooltip":""}\n'
+ exit 0
+}
+
+[ -r "$REPORT" ] || emit_empty
+
+count=$(grep -c . "$REPORT" 2>/dev/null || :)
+case "$count" in '' | *[!0-9]*) count=0 ;; esac
+
+[ "$count" -eq 0 ] && emit_empty
+
+text="lost ${count}"
+tooltip="${count} unowned file(s) under tracked dirs — click to review in \`nvim -R\`"
+printf '{"text":"%s","class":"warn","tooltip":"%s"}\n' "$text" "$tooltip"
+
+now=$(date +%s)
+last_notified=0
+if [ -f "$STATE" ]; then
+ last_notified=$(cat "$STATE" 2>/dev/null || printf 0)
+ case "$last_notified" in '' | *[!0-9]*) last_notified=0 ;; esac
+fi
+
+if [ $((now - last_notified)) -ge 604800 ] &&
+ command -v notify-send >/dev/null 2>&1; then
+ notify-send \
+ --app-name=lostfiles \
+ --urgency=normal \
+ --icon=folder-documents \
+ "Unowned files detected" \
+ "${count} entries under tracked dirs aren't owned by any package. Review at your leisure."
+ printf '%s\n' "$now" >"$STATE"
+fi