blob: 97e8e5eb8824d5ccda4d160d994658f780f55a9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#!/bin/sh
# Network status indicator for waybar
# Shows: WiFi icon (signal strength) + SSID, or Ethernet icon + interface
# Tooltip: upload/download speeds
INTERFACE=$(ip route | awk '/default/ {print $5; exit}')
if [ -z "$INTERFACE" ]; then
echo '{"text": " Disconnected", "tooltip": "No network connection", "class": "disconnected"}'
exit 0
fi
# Measure network speed (requires 1 second delay)
RX1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep 1
RX2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RX_RATE=$((RX2 - RX1))
TX_RATE=$((TX2 - TX1))
format_speed() {
local bytes=$1
if [ $bytes -ge 1073741824 ]; then
printf "%.2f GB/s" $(echo "scale=2; $bytes / 1073741824" | bc)
elif [ $bytes -ge 1048576 ]; then
printf "%.2f MB/s" $(echo "scale=2; $bytes / 1048576" | bc)
elif [ $bytes -ge 1024 ]; then
printf "%.2f KB/s" $(echo "scale=2; $bytes / 1024" | bc)
else
printf "%d B/s" $bytes
fi
}
UP=$(format_speed $TX_RATE)
DOWN=$(format_speed $RX_RATE)
# Determine connection type and get appropriate icon/label
if [ -d "/sys/class/net/$INTERFACE/wireless" ]; then
# WiFi connection
LABEL=$(iwgetid -r 2>/dev/null || echo "WiFi")
# Get signal strength in percentage
SIGNAL=$(awk 'NR==3 {print int($3 * 100 / 70)}' /proc/net/wireless 2>/dev/null)
# Select icon based on signal strength
if [ -z "$SIGNAL" ] || [ "$SIGNAL" -le 0 ]; then
ICON="" # No signal
elif [ "$SIGNAL" -le 25 ]; then
ICON="" # Weak
elif [ "$SIGNAL" -le 50 ]; then
ICON="" # Fair
elif [ "$SIGNAL" -le 75 ]; then
ICON="" # Good
else
ICON="" # Excellent
fi
else
# Ethernet connection
ICON=""
LABEL="$INTERFACE"
fi
TOOLTIP="Up: $UP\nDown: $DOWN"
echo "{\"text\": \"<span size='large'>$ICON</span> $LABEL\", \"tooltip\": \"$TOOLTIP\", \"class\": \"connected\"}"
|