aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/waybar/executable_wifi-status.sh
blob: 082551f244f9adfb76246178a6ab3c8a6ef8777a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh
# Emit waybar JSON describing wifi link state. Handles bond-slaved wlan
# interfaces where waybar's built-in network module fails to detect wifi.
set -eu

iface=wlan0
link=$(iw dev "$iface" link 2>/dev/null || true)

if [ -z "$link" ] || [ "$link" = "Not connected." ]; then
  printf '{"text":"wifi off","class":"down"}\n'
  exit 0
fi

ssid=$(printf '%s\n' "$link" | awk -F': ' '/^\tSSID:/{print $2; exit}')
dbm=$(printf '%s\n' "$link" | awk '/signal:/{print $2; exit}')
pct=$(awk -v r="${dbm:-0}" 'BEGIN{p=2*(r+100); if(p>100)p=100; if(p<0)p=0; printf "%d",p}')

printf '{"text":"%s %s%%","class":"up","tooltip":"%s · %s dBm"}\n' \
  "$ssid" "$pct" "$iface" "$dbm"