mirror of
https://github.com/ItsDrike/nixdots
synced 2024-11-15 06:07:17 +00:00
53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
|
#!/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
|