52 lines
2.2 KiB
Nix
52 lines
2.2 KiB
Nix
{ pkgs, ... }:
|
|
{
|
|
home.packages = with pkgs; [
|
|
(writeShellScriptBin "dmenu-wifi" ''
|
|
nmcli dev wifi rescan
|
|
ssid_list=$(nmcli -f in-use,bssid,ssid,mode,chan,freq,rate,signal,bars,security dev wifi)
|
|
available_connections=$(echo "$ssid_list" | sed '/--.*Infra/d')
|
|
|
|
connection=$( echo "$available_connections" | dmenu -l 20)
|
|
bssid=$(echo "$connection" | sed 's/^.\s*//;s/\s\s.*$//')
|
|
ssid=$(echo "$connection" | sed 's/^.\s*[0-9;A-Z;:]*\s\s//;s/\s*Infra\s*[0-9].*$//')
|
|
[[ "$connection" = "" ]] && notify-send -t 5000 "Wifi Connect" "Cancelled" && exit 0
|
|
[[ $( echo "$connection" | grep "IN-USE" -o) = "IN-USE" ]] && notify-send -t 5000 "Wifi Connect" "Please select valid network" && exit 0
|
|
[[ -n "$(echo "$connection" | grep '\*')" ]] && notify-send -t 5000 "Wifi Connect" "Already Connected to: $(echo "$ssid")" && exit 0
|
|
|
|
notify-send -t 5000 "Network Manager" "Attempting to connect to $ssid..."
|
|
nmcli connection modify "$ssid" 802-11-wireless.bssid "$bssid"
|
|
nmcli device wifi connect "$bssid"
|
|
return_code=$?
|
|
if [ $return_code == 4 ];
|
|
then
|
|
notify-send -t 5000 "Wifi Connect" "Please enter password for '$ssid'..."
|
|
prompt="Enter Password for '$ssid'"
|
|
pwd=$(echo "" | dmenu -p "$prompt")
|
|
nmcli device wifi connect "$bssid" password "$pwd"
|
|
return_code=$?
|
|
fi
|
|
case "$return_code" in
|
|
0) notify-send -t 5000 "Wifi Connect" "Successfully connected to: $ssid!"
|
|
pkill -RTMIN+12 dwmblocks
|
|
exit 0
|
|
;;
|
|
3) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Timeout expired?"
|
|
pkill -RTMIN+12 dwmblocks
|
|
exit 1
|
|
;;
|
|
4)
|
|
notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Possibly wrong password?"
|
|
nmcli connection delete id "$ssid"
|
|
pkill -RTMIN+12 dwmblocks
|
|
exit 1
|
|
;;
|
|
*) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Error code $?"
|
|
echo "Failed. Exiting"
|
|
pkill -RTMIN+12 dwmblocks
|
|
exit 1
|
|
esac
|
|
'')
|
|
];
|
|
}
|
|
|