30 lines
936 B
Bash
Executable File
30 lines
936 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# Prefer AUR helpers over plain pacman when they are on PATH.
|
|
# hash is faster than which for simple existence checks.
|
|
pkgmgr="pacman"
|
|
hash paru 2>/dev/null && pkgmgr="paru"
|
|
hash yay 2>/dev/null && pkgmgr="yay"
|
|
|
|
# Set IFS to newlines so the package-list array splits on lines, not spaces.
|
|
# \r is included to handle any Windows-style line endings from the output.
|
|
IFS=$'\n'$'\r'
|
|
|
|
# -Qu lists packages that have an available upgrade; array length = update count.
|
|
updatesli=($($pkgmgr -Qu))
|
|
text=${#updatesli[@]}
|
|
# Show an empty icon when up-to-date; show a package emoji when updates are pending.
|
|
icon=""
|
|
[ $text -eq 0 ] && icon="" || icon="📦"
|
|
|
|
# Build the tooltip string by concatenating each pending package on its own line.
|
|
for i in ${updatesli[@]}
|
|
do
|
|
tooltip+="$i\n"
|
|
done
|
|
|
|
# Emit a Waybar JSON payload: text is the status icon, tooltip shows the count.
|
|
cat << EOF
|
|
{ "text":"$icon", "tooltip":"UPDATES: $text"}
|
|
EOF
|