summaryrefslogtreecommitdiff
path: root/scripts/wifi-connect.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/wifi-connect.sh')
-rwxr-xr-xscripts/wifi-connect.sh31
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
+