diff options
Diffstat (limited to 'dot_config')
| -rw-r--r-- | dot_config/waybar/config.jsonc | 19 | ||||
| -rw-r--r-- | dot_config/waybar/executable_wg-status.sh | 13 | ||||
| -rw-r--r-- | dot_config/waybar/executable_wifi-status.sh | 19 | ||||
| -rw-r--r-- | dot_config/waybar/style.css | 12 |
4 files changed, 28 insertions, 35 deletions
diff --git a/dot_config/waybar/config.jsonc b/dot_config/waybar/config.jsonc index 839b53c..b4d03ab 100644 --- a/dot_config/waybar/config.jsonc +++ b/dot_config/waybar/config.jsonc @@ -10,9 +10,8 @@ "cpu", "temperature", "custom/memory", - "network#wifi", + "custom/wifi", "network#bond", - "custom/wg", "battery", "clock", "tray", @@ -33,7 +32,7 @@ }, "custom/memory": { - "exec": "awk '/^MemTotal:/{t=$2} /^MemAvailable:/{a=$2} END{u=t-a; printf \"MEM %.1fG (%d%%) used / %.1fG (%d%%) free\\n\", u/1048576, u*100/t, a/1048576, a*100/t}' /proc/meminfo", + "exec": "awk '/^MemTotal:/{t=$2} /^MemAvailable:/{a=$2} END{u=t-a; printf \"MEM %.1fG (%d%%) / %.1fG (%d%%)\\n\", u/1048576, u*100/t, a/1048576, a*100/t}' /proc/meminfo", "interval": 10, "tooltip": false, }, @@ -43,12 +42,10 @@ "critical-threshold": 80, }, - "network#wifi": { - "interface": "wlan0", + "custom/wifi": { + "exec": "~/.config/waybar/wifi-status.sh", + "return-type": "json", "interval": 10, - "format-wifi": "{essid} {signalStrength}%", - "format-disconnected": "wifi off", - "tooltip-format-wifi": "{essid} · {signalStrength}% · {frequency} MHz\n{ifname}", }, "network#bond": { @@ -59,12 +56,6 @@ "tooltip-format": "{ifname}: {ipaddr}/{cidr}", }, - "custom/wg": { - "exec": "~/.config/waybar/wg-status.sh", - "return-type": "json", - "interval": 10, - }, - "battery": { "format": "BAT {capacity}%", "format-charging": "CHR {capacity}%", diff --git a/dot_config/waybar/executable_wg-status.sh b/dot_config/waybar/executable_wg-status.sh deleted file mode 100644 index 1fd7241..0000000 --- a/dot_config/waybar/executable_wg-status.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# Emit waybar JSON describing wireguard status. Uses `ip` (no root needed). -set -eu - -iface=$(ip -br link show type wireguard 2>/dev/null | awk 'NF{print $1; exit}') - -if [ -n "${iface:-}" ]; then - printf '{"text":"WG %s","class":"up","tooltip":"%s"}\n' \ - "$iface" \ - "$(ip -br -4 addr show dev "$iface" 2>/dev/null | awk '{for(i=3;i<=NF;i++)printf "%s ",$i}')" -else - printf '{"text":"WG off","class":"down","tooltip":"no wireguard interface"}\n' -fi diff --git a/dot_config/waybar/executable_wifi-status.sh b/dot_config/waybar/executable_wifi-status.sh new file mode 100644 index 0000000..082551f --- /dev/null +++ b/dot_config/waybar/executable_wifi-status.sh @@ -0,0 +1,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" diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css index 6038a87..d63d8aa 100644 --- a/dot_config/waybar/style.css +++ b/dot_config/waybar/style.css @@ -42,7 +42,7 @@ window#waybar { #pulseaudio, #tray, #custom-memory, -#custom-wg { +#custom-wifi { padding: 0 6px; } @@ -58,19 +58,15 @@ window#waybar { color: #fe8019; /* orange */ } -#network.wifi { - color: #b8bb26; /* green */ -} - #network.bond { color: #d3869b; /* purple */ } -#custom-wg.up { - color: #d3869b; /* purple */ +#custom-wifi { + color: #b8bb26; /* green */ } -#custom-wg.down { +#custom-wifi.down { color: #928374; /* gray */ } |
