#!/bin/bash # Check if WiFi is enabled if [ "$(nmcli radio wifi)" != "enabled" ]; then echo "[]" exit 0 fi # Get current connected network CURRENT_SSID=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d':' -f2) # Scan and format as JSON nmcli -t -f SSID,SIGNAL,SECURITY dev wifi list --rescan yes 2>/dev/null | \ grep -v '^$' | \ awk -F: -v current="$CURRENT_SSID" ' BEGIN { print "[" first=1 } { ssid=$1 signal=$2 security=$3 # Skip if SSID is empty or "--" if (ssid == "" || ssid == "--") next # Remove duplicates (keep first occurrence) if (seen[ssid]++) next # Determine if connected connected = (ssid == current) ? "true" : "false" # Determine security icon if (security == "" || security == "--") { sec_icon = "" secured = "false" } else { sec_icon = "" secured = "true" } # Signal strength icon if (signal >= 75) sig_icon = " " else if (signal >= 50) sig_icon = " " else if (signal >= 25) sig_icon = " " else sig_icon = " " # Print JSON object if (!first) print "," printf " {\"ssid\":\"%s\",\"signal\":%d,\"security\":\"%s\",\"secured\":%s,\"connected\":%s,\"sig_icon\":\"%s\",\"sec_icon\":\"%s\"}", ssid, signal, security, secured, connected, sig_icon, sec_icon first=0 } END { print "" print "]" }'