36 lines
746 B
Bash
Executable File
36 lines
746 B
Bash
Executable File
#!/bin/bash -e
|
|
|
|
RESCAN=0
|
|
|
|
NMCLI=(nmcli dev wifi)
|
|
CON=("${NMCLI[@]}" connect)
|
|
|
|
function connect() {
|
|
if ! "${CON[@]}" "$1" 2> /dev/null; then
|
|
if [ "$RESCAN" = 1 ]; then
|
|
return
|
|
fi
|
|
RESCAN=1
|
|
"${NMCLI[@]}" list --rescan yes > /dev/null
|
|
if ! "${CON[@]}" "$1"; then
|
|
return
|
|
fi
|
|
fi
|
|
|
|
kill -36 "$(cat "$HOME/.cache/pidofbar")"
|
|
exit
|
|
}
|
|
|
|
|
|
if [ -n "$1" ]; then
|
|
connect "$1"
|
|
else
|
|
readarray -t NET <<< \
|
|
"$(nmcli -f SSID,CHAN,RATE,SIGNAL,BARS,SECURITY dev wifi list \
|
|
| awk '!seen[$1]++')"
|
|
COLUMNS=1
|
|
select net in "${NET[@]}"; do
|
|
connect "$(awk '{print $1}' <<< "$net")" && break
|
|
done
|
|
fi
|