mirror of
				https://github.com/ItsDrike/dotfiles.git
				synced 2025-11-04 01:16:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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
 |