50 lines
2.0 KiB
Bash
Executable File
50 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# --- STAGE 1: THE INSTANT DATA ---
|
|
# Gather time, workspace, and hardware stats immediately
|
|
time_info=$(date +"%H:%M | %A, %d %b")
|
|
workspace_id=$(hyprctl activeworkspace -j | jq -r '.id')
|
|
|
|
cpu_load=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')
|
|
mem_usage=$(free -h | awk '/^Mem:/ {print $3 "/" $2}')
|
|
|
|
batt_pct=$(cat /sys/class/power_supply/BAT0/capacity 2>/dev/null || echo "0")
|
|
batt_stat=$(cat /sys/class/power_supply/BAT0/status 2>/dev/null)
|
|
batt_icon=$([ "$batt_stat" = "Charging" ] && echo "" || echo "")
|
|
|
|
# Send first notification immediately (ID 9998)
|
|
notify-send -r 9998 -t 10000 " $time_info" \
|
|
"<b>Workspace:</b> $workspace_id
|
|
<b>CPU:</b> $cpu_load <b>Mem:</b> $mem_usage <b>Bat:</b> $batt_icon $batt_pct%"
|
|
|
|
# --- STAGE 2: THE NETWORK & UPDATES ---
|
|
# This part will run in the background and pop up once data is gathered
|
|
{
|
|
# Original Networking Logic
|
|
net_ssid=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2)
|
|
|
|
# If Wifi is empty, check for Wired
|
|
if [ -z "$net_ssid" ]; then
|
|
net_ssid=$(nmcli device | grep "ethernet" | grep "connected" | awk '{print "Wired "}')
|
|
fi
|
|
|
|
# Wireguard status
|
|
wg0=$(ip addr show wg0 2>/dev/null | grep -q "inet" && echo " wg0 " || echo "")
|
|
wg1=$(ip addr show wg1 2>/dev/null | grep -q "inet" && echo " wg1 " || echo "")
|
|
vpn_status="${wg0}${wg1}"
|
|
[ -z "$vpn_status" ] && vpn_status="No VPN"
|
|
|
|
# Updates (Arch Repo + Flatpak)
|
|
arch_updates=$(checkupdates 2>/dev/null | wc -l)
|
|
fp_updates=$(flatpak remote-ls --updates 2>/dev/null | wc -l)
|
|
total_upd=$((arch_updates + fp_updates))
|
|
|
|
upd_text=$([ "$total_upd" -gt 0 ] && echo " $total_upd updates available" || echo " System up-to-date")
|
|
|
|
# Send second notification (ID 9999)
|
|
notify-send -r 9999 -t 10000 " Network & Updates" \
|
|
"<b>Net:</b> ${net_ssid:-Disconnected}
|
|
<b>VPN:</b> $vpn_status
|
|
<b>Updates:</b> $upd_text"
|
|
} &
|