#!/usr/bin/env bash # rofi config without entry so to make select from available options only rofiprompt=theme/passmenu.rasi # normal rofi menu rofidmenu=theme/passmenu.rasi # rofi config for password rofipass=theme/passmenu.rasi # Power Status flag=$(cat /sys/class/net/wl*/flags) if [ "$flag" = "0x1003" ]; then power="On" else power="Off" fi # Connection Status state=$(cat /sys/class/net/wl*/operstate) if [ "$state" = "up" ]; then status=$(nmcli | grep "^wlp" | sed 's/\ connected\ to/Connected to/' | cut -d ':' -f2) else status="Disconnected" fi # ┌─┐┌─┐┬ ┬┌─┐┬─┐ # ├─┘│ ││││├┤ ├┬┘ # ┴ └─┘└┴┘└─┘┴└─ powertoggle=$( [ "$flag" = "0x1003" ] && echo "Power Off" || echo "Power On" ) powerswitch() { if [ "$powertoggle" = "Power Off" ]; then nmcli radio wifi off elif [ "$powertoggle" = "Power On" ]; then nmcli radio wifi on fi } # ┌─┐┌─┐┌┐┌┌┐┌┌─┐┌─┐┌┬┐ # │ │ │││││││├┤ │ │ # └─┘└─┘┘└┘┘└┘└─┘└─┘ ┴ connections() { list=$(nmcli --fields "SECURITY,SSID" device wifi list | tail -n +2 | sed "s/ */ /g" | sed -E "s/WPA*.?//g" | sed "s/^--//g" | sed "s/ //g") networks=$(printf "$list" | rofi -theme $rofiprompt -dmenu -i -hover-select -p "Select Wifi Network $status") wifi=$( echo "$networks" | sed "s/ //g" | sed "s/ //g" | xargs) [ -z "$networks" ] && exit nopass="No Password" pass=$(printf "$nopass\nCancel" | rofi -theme $rofipass -dmenu -i -hover-select -password -p "Wifi Password") if [ "$pass" = "" ]; then exit elif [ "$pass" = "$nopass" ]; then nmcli dev wifi con "$wifi" && printf "exit" | rofi -theme $rofiprompt -dmenu -only-match -i -p "Successfully Connected to $wifi" && exit elif [ "$pass" = "Cancel" ]; then exit else nmcli dev wifi con "$wifi" password "$pass" && printf "exit" | rofi -theme $rofiprompt -dmenu -i -only-match -p "Successfully Connected to $wifi" && exit fi printf "exit" | rofi -theme $rofiprompt -dmenu -i -p -only-match "Failed to Connect $wifi" && exit } # ┌┬┐┌─┐┌┐┌┬ ┬┌─┐┬ # │││├─┤││││ │├─┤│ # ┴ ┴┴ ┴┘└┘└─┘┴ ┴┴─┘ manual() { wifi=$(rofi -theme $rofidmenu -dmenu -i -p "Enter Wifi Name") [ -z "$wifi" ] && exit nopass="Run Without Password" pass=$(printf "$nopass\nCancel" | rofi -theme $rofipass -dmenu -i -password -p "Wifi Password") if [ "$pass" = "" ]; then exit elif [ "$pass" = "$nopass" ]; then nmcli dev wifi con "$wifi" && printf "exit" | rofi -theme $rofiprompt -dmenu -i -only-match -p "Successfully Connected to $wifi" && exit elif [ "$pass" = "Cancel" ]; then exit else nmcli dev wifi con "$wifi" password "$pass" && printf "exit" | rofi -theme $rofiprompt -dmenu -i -only-match -p "Successfully Connected to $wifi" && exit fi printf "exit" | rofi -theme $rofiprompt -dmenu -only-match -i -p "Failed to Connect $wifi" && exit } # ┌─┐┌─┐┌┬┐┬┌─┐┌┐┌┌─┐ # │ │├─┘ │ ││ ││││└─┐ # └─┘┴ ┴ ┴└─┘┘└┘└─┘ options="$powertoggle\nConnections\nConnect Manually" rofiwifi=$(printf "$options" | rofi -theme $rofiprompt -dmenu -i -hover-select -p "Wifi Powered: $power Status: $status") case $rofiwifi in $powertoggle) powerswitch ;; Connections) notify-send "Scanning" connections ;; "Connect Manually") manual esac 2>/dev/null