~kris/dots

srice

ref: e98f3b030dc24445bd55c68d95d2d81933fd68b3 srice/.config/eww/scripts/scan_wifi.sh -rw-r--r-- 1.6 KiB
e98f3b03 — Kris Yotam chore: sync local state after restore (push updates, no pull) a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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 "]" 
    }'