waybar: add network widget, margins, border and rounded corners
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
CACHE="/tmp/waybar-net"
|
||||
iface=$(ip route get 8.8.8.8 2>/dev/null | awk '{for(i=1;i<=NF;i++) if($i=="dev") print $(i+1)}' | head -1)
|
||||
|
||||
if [ -z "$iface" ]; then
|
||||
echo "↑0B ↓0B"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
rx=$(cat /sys/class/net/$iface/statistics/rx_bytes 2>/dev/null || echo 0)
|
||||
tx=$(cat /sys/class/net/$iface/statistics/tx_bytes 2>/dev/null || echo 0)
|
||||
now=$(date +%s%3N)
|
||||
|
||||
if [ -f "$CACHE" ]; then
|
||||
read -r prev_rx prev_tx prev_time < "$CACHE"
|
||||
dt=$(( now - prev_time ))
|
||||
[ "$dt" -le 0 ] && dt=1000
|
||||
up=$(( (tx - prev_tx) * 1000 / dt ))
|
||||
down=$(( (rx - prev_rx) * 1000 / dt ))
|
||||
else
|
||||
up=0; down=0
|
||||
fi
|
||||
|
||||
echo "$rx $tx $now" > "$CACHE"
|
||||
|
||||
fmt() {
|
||||
local b=$1
|
||||
if [ "$b" -ge 1073741824 ]; then printf "%4s" "$(( b / 1073741824 ))G"
|
||||
elif [ "$b" -ge 1048576 ]; then printf "%4s" "$(( b / 1048576 ))M"
|
||||
elif [ "$b" -ge 1024 ]; then printf "%4s" "$(( b / 1024 ))K"
|
||||
else printf "%4s" "${b}B"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "↑$(fmt "$up")/s ↓$(fmt "$down")/s"
|
||||
Reference in New Issue
Block a user