about summary refs log tree commit diff
path: root/home/wm/waybar/waybar-systemd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'home/wm/waybar/waybar-systemd.sh')
-rwxr-xr-xhome/wm/waybar/waybar-systemd.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/home/wm/waybar/waybar-systemd.sh b/home/wm/waybar/waybar-systemd.sh
new file mode 100755
index 0000000..bf4e8b8
--- /dev/null
+++ b/home/wm/waybar/waybar-systemd.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+failed_user="$(systemctl --plain --no-legend --user list-units --state=failed | awk '{ print $1 }')"
+failed_system="$(systemctl --plain --no-legend list-units --state=failed | awk '{ print $1 }')"
+
+failed_systemd_count="$(echo -n "$failed_system" | grep -c '^')"
+failed_user_count="$(echo -n "$failed_user" | grep -c '^')"
+
+text=$(( failed_systemd_count + failed_user_count ))
+
+if [ "$text" -eq 0 ]; then
+    printf '{"text": ""}\n'
+else
+    tooltip=""
+
+    [ -n "$failed_system" ] && tooltip="Failed system services:\n\n${failed_system}\n\n${tooltip}"
+    [ -n "$failed_user" ]   && tooltip="Failed user services:\n\n${failed_user}\n\n${tooltip}"
+
+    tooltip="$(printf  "%s" "$tooltip" | perl -pe 's/\n/\\n/g' | perl -pe 's/(?:\\n)+$//')"
+
+    printf '{"text": "%s", "tooltip": "%s" }\n' "$text" "$tooltip"
+fi