46 lines
1.3 KiB
Bash
Executable File
46 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
NOTIFY_ICON=/usr/share/icons/Papirus/32x32/apps/system-software-update.svg
|
|
|
|
get_total_updates() { UPDATES=$(checkupdates 2>/dev/null | wc -l); }
|
|
|
|
while true; do
|
|
get_total_updates
|
|
|
|
# notify user of updates
|
|
if hash notify-send &>/dev/null; then
|
|
if (( UPDATES > 50 )); then
|
|
notify-send -u critical -i $NOTIFY_ICON \
|
|
"You really need to update!!" "$UPDATES New packages"
|
|
elif (( UPDATES > 25 )); then
|
|
notify-send -u normal -i $NOTIFY_ICON \
|
|
"You should update soon" "$UPDATES New packages"
|
|
elif (( UPDATES > 2 )); then
|
|
notify-send -u low -i $NOTIFY_ICON \
|
|
"$UPDATES New packages"
|
|
fi
|
|
fi
|
|
|
|
# when there are updates available
|
|
# every 10 seconds another check for updates is done
|
|
while (( UPDATES > 0 )); do
|
|
if (( UPDATES == 1 )); then
|
|
echo " $UPDATES"
|
|
elif (( UPDATES > 1 )); then
|
|
echo " $UPDATES"
|
|
else
|
|
echo " None"
|
|
fi
|
|
sleep 10
|
|
get_total_updates
|
|
done
|
|
|
|
# when no updates are available, use a longer loop, this saves on CPU
|
|
# and network uptime, only checking once every 30 min for new updates
|
|
while (( UPDATES == 0 )); do
|
|
echo " None"
|
|
sleep 1800
|
|
get_total_updates
|
|
done
|
|
done
|