#!/bin/bash # wifi-menu.sh — wofi-based WiFi network picker using nmcli # Lists available networks, connects on selection. # Get list of networks: SSID, signal, security SELECTED=$(nmcli -t -f SSID,SIGNAL,SECURITY device wifi list --rescan yes 2>/dev/null | \ grep -v '^$' | \ sort -t: -k2 -nr | \ awk -F: '{ sig = $2 + 0 if (sig > 75) bars = "████" else if (sig > 50) bars = "███░" else if (sig > 25) bars = "██░░" else bars = "█░░░" sec = ($3 != "" && $3 != "--") ? " 󰌾" : "" printf "%s %s%s\n", bars, $1, sec }' | \ wofi --dmenu --insensitive --prompt "WiFi" -W 400 -H 500 2>/dev/null) # Exit if nothing selected [ -z "$SELECTED" ] && exit 0 # Extract SSID (everything after the signal bars + spaces) SSID=$(echo "$SELECTED" | sed 's/^[█░ ]* //; s/ 🔒$//') # Connect nmcli device wifi connect "$SSID" 2>&1 | grep -q "successfully" && \ notify-send -t 3000 "WiFi" "Connected to $SSID" || \ notify-send -t 5000 "WiFi" "Failed to connect to $SSID"