add updates logic
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"modules-left": ["battery", "clock#date", "clock", "custom/launcher"],
|
"modules-left": ["battery", "clock#date", "clock","custom/updates", "custom/launcher"],
|
||||||
"modules-center": ["hyprland/workspaces"],
|
"modules-center": ["hyprland/workspaces"],
|
||||||
"modules-right": ["network", "bluetooth", "pulseaudio", "custom/power"],
|
"modules-right": ["network", "bluetooth", "pulseaudio", "custom/power"],
|
||||||
|
|
||||||
@@ -136,15 +136,14 @@
|
|||||||
},
|
},
|
||||||
"sort-by-number": true
|
"sort-by-number": true
|
||||||
},
|
},
|
||||||
"custom/updates": {
|
"custom/updatespacman": {
|
||||||
"format": " {}",
|
"format": "{}{icon}",
|
||||||
"escape": true,
|
|
||||||
"return-type": "json",
|
"return-type": "json",
|
||||||
"exec": "~/.config/ml4w/scripts/ml4w-check-system-updates",
|
"format-icons": {
|
||||||
"interval": 1800,
|
"has-updates": " ",
|
||||||
"signal": 1,
|
"updated": ""
|
||||||
"hide-empty-text": true,
|
},
|
||||||
"on-click": "~/.config/ml4w/settings/installupdates.sh",
|
"exec-if": "which waybar-module-pacman-updates",
|
||||||
"on-click-right": "~/.config/ml4w/settings/software.sh"
|
"exec": "waybar-module-pacman-updates --no-zero-output"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
103
dotfiles/.config/waybar/scripts/check-system-updates
Normal file
103
dotfiles/.config/waybar/scripts/check-system-updates
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# _ _ _ _
|
||||||
|
# | | | |_ __ __| | __ _| |_ ___ ___
|
||||||
|
# | | | | '_ \ / _` |/ _` | __/ _ \/ __|
|
||||||
|
# | |_| | |_) | (_| | (_| | || __/\__ \
|
||||||
|
# \___/| .__/ \__,_|\__,_|\__\___||___/
|
||||||
|
# |_|
|
||||||
|
#
|
||||||
|
|
||||||
|
# Check if command exists
|
||||||
|
_checkCommandExists() {
|
||||||
|
cmd="$1"
|
||||||
|
if ! command -v "$cmd" >/dev/null; then
|
||||||
|
echo 1
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
script_name=$(basename "$0")
|
||||||
|
|
||||||
|
# Count the instances
|
||||||
|
instance_count=$(ps aux | grep -F "$script_name" | grep -v grep | grep -v $$ | wc -l)
|
||||||
|
|
||||||
|
if [ $instance_count -gt 1 ]; then
|
||||||
|
sleep $instance_count
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Define threshholds for color indicators
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
threshhold_green=0
|
||||||
|
threshhold_yellow=25
|
||||||
|
threshhold_red=100
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Check for updates
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
# Arch
|
||||||
|
if [[ $(_checkCommandExists "pacman") == 0 ]]; then
|
||||||
|
|
||||||
|
check_lock_files() {
|
||||||
|
local pacman_lock="/var/lib/pacman/db.lck"
|
||||||
|
local checkup_lock="${TMPDIR:-/tmp}/checkup-db-${UID}/db.lck"
|
||||||
|
|
||||||
|
while [ -f "$pacman_lock" ] || [ -f "$checkup_lock" ]; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_lock_files
|
||||||
|
|
||||||
|
yay_installed="false"
|
||||||
|
paru_installed="false"
|
||||||
|
if [[ $(_checkCommandExists "yay") == 0 ]]; then
|
||||||
|
yay_installed="true"
|
||||||
|
fi
|
||||||
|
if [[ $(_checkCommandExists "paru") == 0 ]]; then
|
||||||
|
paru_installed="true"
|
||||||
|
fi
|
||||||
|
if [[ $yay_installed == "true" ]] && [[ $paru_installed == "false" ]]; then
|
||||||
|
aur_helper="yay"
|
||||||
|
elif [[ $yay_installed == "false" ]] && [[ $paru_installed == "true" ]]; then
|
||||||
|
aur_helper="paru"
|
||||||
|
else
|
||||||
|
aur_helper="yay"
|
||||||
|
fi
|
||||||
|
updates_aur=$($aur_helper -Qum | wc -l)
|
||||||
|
updates_pacman=$(checkupdates | wc -l)
|
||||||
|
updates=$((updates_aur+updates_pacman))
|
||||||
|
|
||||||
|
# Fedora
|
||||||
|
elif [[ $(_checkCommandExists "dnf") == 0 ]]; then
|
||||||
|
updates=$(dnf check-update -q | grep -c ^[a-z0-9])
|
||||||
|
# Others
|
||||||
|
else
|
||||||
|
updates=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -----------------------------------------------------
|
||||||
|
# Output in JSON format for Waybar Module custom-updates
|
||||||
|
# -----------------------------------------------------
|
||||||
|
|
||||||
|
css_class="green"
|
||||||
|
|
||||||
|
if [ "$updates" -gt $threshhold_yellow ]; then
|
||||||
|
css_class="yellow"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$updates" -gt $threshhold_red ]; then
|
||||||
|
css_class="red"
|
||||||
|
fi
|
||||||
|
if [ "$updates" != 0 ]; then
|
||||||
|
if [ "$updates" -gt $threshhold_green ]; then
|
||||||
|
printf '{"text": "%s", "alt": "%s", "tooltip": "Click to update your system", "class": "%s"}' "$updates" "$updates" "$css_class"
|
||||||
|
else
|
||||||
|
printf '{"text": "0", "alt": "0", "tooltip": "No updates available", "class": "green"}'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
1
dotfiles/.config/waybar/scripts/install-updates.sh
Normal file
1
dotfiles/.config/waybar/scripts/install-updates.sh
Normal file
@@ -0,0 +1 @@
|
|||||||
|
$(cat ~/.config/ml4w/settings/terminal.sh) --class dotfiles-floating -e ~/.config/waybar/scripts/check-system-updates
|
||||||
@@ -16,6 +16,25 @@ window#waybar {
|
|||||||
.modules-center {
|
.modules-center {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Updated Update Module Styling */
|
||||||
|
#custom-updates {
|
||||||
|
padding: 5px 15px;
|
||||||
|
background-color: rgba(0, 43, 51, 0.85); /* Matches your other modules */
|
||||||
|
border-radius: 20px;
|
||||||
|
margin: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-updates.yellow {
|
||||||
|
background-color: #ffcc66; /* A nice yellow/orange */
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-updates.red {
|
||||||
|
background-color: #cc3436; /* Your existing red color */
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
.modules-left {
|
.modules-left {
|
||||||
margin: 2px 0 0 5px;
|
margin: 2px 0 0 5px;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user