#!/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