Files
mabox-colorizer/bin/checkupdates.sh
2026-02-05 01:58:08 +01:00

140 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# check updates and show how many packages to update in Conky
# We don't need to run checkupdates at Conky start as it takes few seconds and block Conky
if (( $EUID != 0 )); then
source ~/.config/mabox/mabox.conf
fi
UPDATES_LIST="/tmp/updates/updates_list"
AUR_UPDATES_LIST="/tmp/updates/aur_updates_list"
if [[ ! -f "$UPDATES_LIST" ]];then
mkdir -p /tmp/updates
touch "$UPDATES_LIST"
chmod 666 "${UPDATES_LIST}"
fi
if [[ ! -f "$AUR_UPDATES_LIST" ]]; then
touch "$AUR_UPDATES_LIST"
chmod 666 "$AUR_UPDATES_LIST"
fi
do_checkupdates() {
/usr/bin/checkupdates > "$UPDATES_LIST"
}
do_checkaurupdates() {
yay -Qua | grep -v '\.$' > "$AUR_UPDATES_LIST" 2>/dev/null
}
sys_checkupdates() {
do_checkupdates
do_checkaurupdates
exit 0
}
count_pkgs(){
REPO=$(wc -l $UPDATES_LIST | awk '{print $1}')
AUR=$(wc -l $AUR_UPDATES_LIST | awk '{print $1}')
PKGS=$((REPO + AUR))
mb-setvar updates=${PKGS}
}
case "$LANG" in
pl*)
AVAIL_UPDATES="Dostępne aktualizacje"
UPTODATE="System jest aktualny"
PKGS_TO_UPDATE="Pakiety do aktualizacji:"
YAY_UPD="Użyj yay (cli)"
PAMAC_UPD="Użyj Pamac (GUI)"
DISABLE="Wyłącz powiadomienia"
;;
es*)
AVAIL_UPDATES="Actualizaciones disponibles"
UPTODATE="El sistema esta actualizado"
PKGS_TO_UPDATE="Paquetes para actualizar:"
YAY_UPD="Actualizar con yay (cli)"
PAMAC_UPD="Actualizar con Pamac (GUI)"
DISABLE="Deshabilitar notificaciones"
;;
*)
AVAIL_UPDATES="Available updates"
UPTODATE="System is up to date"
PKGS_TO_UPDATE="Packages to update:"
YAY_UPD="Update with yay (cli)"
PAMAC_UPD="Update with Pamac (GUI)"
DISABLE="Disable notifications"
;;
esac
notify_updates_available() {
if [ "${1}" == "-p" ];then
notify-send.sh -u critical -i mbcc "$AVAIL_UPDATES" "$PKGS_TO_UPDATE $PKGS" -o "$YAY_UPD:terminator -T '$YAY_UPD' -e yay" \
-o "$PAMAC_UPD:pamac-manager --updates"
else
notify-send.sh -u critical -i mbcc "$AVAIL_UPDATES" "$PKGS_TO_UPDATE $PKGS" -o "$YAY_UPD:terminator -T '$YAY_UPD' -e yay" \
-o "$PAMAC_UPD:pamac-manager --updates" -o "$DISABLE:mb-setvar update_notifications=false"
fi
}
from_conky(){
if [ -f /tmp/"$CONKYPID" ]; then
do_checkupdates
do_checkaurupdates
count_pkgs
if [ "$PKGS" != "0" ]; then
if [[ "$update_notifications" != "false" ]];then
notify_updates_available
fi
printf "\${font}\${alignr} $AVAIL_UPDATES: \${color red}"
echo "$PKGS"
else
printf "\${font}\${color}\${alignr} $UPTODATE"
fi
else
touch /tmp/"${CONKYPID}"
fi
}
from_panel(){
do_checkupdates
do_checkaurupdates
count_pkgs
if [ "$PKGS" != "0" ]; then
notify_updates_available -p
else
notify-send.sh -u critical -i mbcc "Updates" "$UPTODATE"
fi
}
from_cli(){
do_checkupdates
do_checkaurupdates
count_pkgs
if [ "$PKGS" != "0" ];then
echo "$AVAIL_UPDATES $PKGS"
cat "$UPDATES_LIST"
cat "$AUR_UPDATES_LIST"
else
echo "$UPTODATE"
fi
}
case "$1" in
-s)
CONKYPID=$(pgrep -f sysinfo_mbcolor)
from_conky;;
-g)
CONKYPID=$(pgrep -f sysinfo_graph_mbcolor)
from_conky;;
-m)
CONKYPID=$(pgrep -f mabox_info_mbcolor)
from_conky;;
-p)from_panel;;
-u)sys_checkupdates;;
*)from_cli;;
esac