dotfiles/home/.config/eww/scripts/net

53 lines
1.4 KiB
Plaintext
Raw Normal View History

2023-01-29 21:44:47 +00:00
#!/usr/bin/env bash
# shellcheck source=include
source "./scripts/include"
STRENGTH_ICONS=("󰤫" "󰤯" "󰤟" "󰤢" "󰤥" "󰤨")
DISCONNECTED_ICON="󰤮"
WIFI_OFF="󰖪"
toggle() {
status=$(rfkill -J | jq -r '.rfkilldevices[] | select(.type == "wlan") | .soft' | head -1)
if [ "$status" = "unblocked" ]; then
rfkill block wlan
else
rfkill unblock wlan
fi
}
get_report() {
connection_details="$(nmcli -t -f NAME,TYPE,DEVICE connection show --active | grep wireless | head -n1)"
essid="$(echo $connection_details | cut -d':' -f1)"
device="$(echo $connection_details | cut -d':' -f3)"
if [ -n "$device" ]; then
state="$(nmcli -t -f DEVICE,STATE device status | grep "$device" | head -n1 | cut -d':' -f2)"
signal="$(nmcli -t -f in-use,signal dev wifi | grep "\*" | cut -d':' -f2)"
else
state="unknown"
signal="0"
fi
if [ "$state" = "disconnected" ] ; then
icon="$DISCONNECTED_ICON"
elif [ "$state" = "unknown" ]; then
icon="$WIFI_OFF"
else
icon="$(pick_icon "$signal" 0 100 "${STRENGTH_ICONS[@]}")"
fi
jq -n -c --monochrome-output \
--arg essid "$essid" \
--arg icon "$icon" \
--arg state "$state" \
--arg signal "$signal" \
'$ARGS.named'
}
case "$1" in
"toggle") toggle ;;
"status") get_report ;;
*) >&2 echo "Invalid usage, argument '$1' not recognized."; exit 1 ;;
esac