summaryrefslogtreecommitdiff
path: root/scripts/wifi-connect.sh
diff options
context:
space:
mode:
authorsubh <subh@example.com>2026-01-19 21:47:02 +0530
committersubh <subh@example.com>2026-01-19 21:47:02 +0530
commit65aad59ef0802708a8a7c8a312755232cc1823d3 (patch)
treefe0a437f3e9a71ab5b9197d9b8fa72c24d2170ea /scripts/wifi-connect.sh
initial commit
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
+