diff --git a/.config/waybar/config##hostname.owlenpc00 b/.config/waybar/config##hostname.owlenpc00
index 8f157f8..ecb1497 100644
--- a/.config/waybar/config##hostname.owlenpc00
+++ b/.config/waybar/config##hostname.owlenpc00
@@ -10,6 +10,7 @@
"modules-left": [
"clock",
"custom/swaync",
+ "custom/alhp",
"hyprland/window",
"hyprland/workspaces"
],
@@ -278,5 +279,14 @@
"on-scroll-down": "hyprctl hyprsunset gamma -10", // dimmer
"interval": 0
+ },
+
+ "custom/alhp": {
+ "id": "custom-alhp",
+ "exec": "$HOME/.config/waybar/scripts/alhp.sh",
+ "return-type": "json",
+ "interval": 60,
+ "tooltip": true,
+ "format": "{text}",
}
}
diff --git a/.config/waybar/scripts/alhp.sh b/.config/waybar/scripts/alhp.sh
new file mode 100755
index 0000000..74f745c
--- /dev/null
+++ b/.config/waybar/scripts/alhp.sh
@@ -0,0 +1,52 @@
+#!/usr/bin/env bash
+set -euo pipefail
+IFS=$'\n\t'
+
+# defaults
+text=""
+tooltip='All good'
+class='good'
+
+# Check if alhp.utils command exists, if not consider it as down
+if ! command -v alhp.utils &> /dev/null; then
+ tooltip="Service unavailable"
+ text=""
+ class="down"
+else
+ ALHP_OUTPUT=$(alhp.utils -j)
+ mirror_stale=$(jq -r '.mirror_out_of_date' <<<"$ALHP_OUTPUT")
+
+ total=$(jq -r '.total' <<<"$ALHP_OUTPUT")
+ mirror_stale=$(jq -r '.mirror_out_of_date' <<<"$ALHP_OUTPUT")
+
+ # safe array even if packages is null
+ readarray -t packages < <(
+ jq -r '.packages // [] | .[]' <<<"$ALHP_OUTPUT"
+ )
+
+ # 1) Mirror stale? highest priority
+ if [[ "$mirror_stale" == "true" ]]; then
+ class="stale"
+ tooltip="Mirror is out of date"
+ # 2) Any pending PKGBUILDs?
+ elif (( total > 0 )); then
+ class="bad"
+ text="$total"
+ tooltip=$(printf "%s\n" "${packages[@]}")
+ fi
+fi
+
+case "$class" in
+ good) icon=" ";;
+ stale) icon=" ";;
+ bad) icon=" ";;
+ down) icon="x ";;
+esac
+
+# Emit compact JSON for Statusbar
+jq -nc \
+ --arg text "$icon $text" \
+ --arg class "$class" \
+ --arg tooltip "$tooltip" \
+ '{text: $text, class: $class, tooltip: $tooltip}'
+