diff options
Diffstat (limited to 'scripts/wifi-connect.sh')
| -rwxr-xr-x | scripts/wifi-connect.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/wifi-connect.sh b/scripts/wifi-connect.sh new file mode 100755 index 0000000..b34f8f4 --- /dev/null +++ b/scripts/wifi-connect.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +[[ "$(nmcli -g WIFI general)" == "disabled" ]] && nmcli radio wifi on + +NETWORKS=$(nmcli -f SSID,SIGNAL,SECURITY dev wifi list | tail -n +2 | \ +awk -F ' +' ' + $1 != "" { + display = sprintf("%s (%s%%) [%s]", $1, $2, $3) + print display + } +' | sort -u) + +CHOICE=$(echo "$NETWORKS" | rofi -dmenu -i -p "WiFi") +[[ -z "$CHOICE" ]] && exit 0 + +SSID=$(echo "$CHOICE" | sed 's/ (.*//') + +BSSID=$(nmcli -t -f BSSID,SIGNAL dev wifi list | grep "^.*:$SSID$" | \ +awk -F: '{print $1}' | sort -nr | head -n1) + +[[ -z "$BSSID" ]] && BSSID="$SSID" + +if nmcli dev wifi connect "$BSSID" 2>/dev/null; then + notify-send -u normal -i network-wireless "WiFi Status" "$SSID Connected Successfully" +else + PASSWORD=$(rofi -dmenu -password -p "Password for $SSID") + [[ -z "$PASSWORD" ]] && exit 1 + nmcli dev wifi connect "$BSSID" password "$PASSWORD" && \ + notify-send -u normal -i network-wireless "WiFi Status" "$SSID Connected Successfully" +fi + |
