diff --git a/update-notify b/update-notify index b3ba6be..9757319 100755 --- a/update-notify +++ b/update-notify @@ -93,29 +93,37 @@ updates=$((arch_updates + aur_updates)) # --------------------------------------------------------------------------- # Kernel check: the stock kernel updated, but your custom build didn't # --------------------------------------------------------------------------- +kernel_lines=() for stock_pkg in "${!KERNELS[@]}"; do custom_pkg=${KERNELS[$stock_pkg]} # Skip kernels where either package isn't installed if ! stock_ver=$(latest_version "$stock_pkg") || ! custom_ver=$(latest_version "$custom_pkg"); then - clear_state "kernel-$stock_pkg" continue fi - # Notify while the stock kernel is newer than the newest custom build + # Flag the kernel while the stock one is newer than the newest custom build # (installed, or already built into your repo but not yet installed) if (( $(vercmp "$stock_ver" "$custom_ver") > 0 )); then - notify_once "kernel-$stock_pkg" "Kernel update available: $stock_pkg" \ - "Rebuild $custom_pkg ($stock_pkg $stock_ver)" - else - clear_state "kernel-$stock_pkg" + kernel_lines+=("Rebuild $custom_pkg ($stock_pkg $stock_ver)") fi done # --------------------------------------------------------------------------- -# General updates threshold +# Build a single notification +# - kernel rebuild lines are always included +# - update counts and reminders only when the threshold is reached # --------------------------------------------------------------------------- -if (( updates >= threshold )); then +over_threshold=0 +(( updates >= threshold )) && over_threshold=1 + +parts=() +if (( over_threshold )); then + parts+=("Arch: $arch_updates, AUR: $aur_updates") +fi +parts+=("${kernel_lines[@]}") + +if (( over_threshold )); then reminders=() # Always remind about git packages if git-monitor is installed @@ -133,13 +141,17 @@ if (( updates >= threshold )); then fi fi - body="Arch: $arch_updates, AUR: $aur_updates" if (( ${#reminders[@]} )); then printf -v list '%s, ' "${reminders[@]}" - body+=$'\n'"Also check: ${list%, }" + parts+=("Also check: ${list%, }") fi +fi - notify_once "updates" "Updates available" "$body" +if (( ${#parts[@]} )); then + title="Updates available" + (( over_threshold )) || title="Kernel update available" + printf -v body '%s\n' "${parts[@]}" + notify_once "updates" "$title" "${body%$'\n'}" else clear_state "updates" fi