Add Config Files
This commit is contained in:
parent
ade387bdb6
commit
f071a73fdb
520 changed files with 45353 additions and 1 deletions
103
.config/rofi/wifi.sh
Executable file
103
.config/rofi/wifi.sh
Executable file
|
@ -0,0 +1,103 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Notify user of Wi-Fi scanning
|
||||
notify-send "Scanning Wi-Fi networks..."
|
||||
|
||||
# Get the active Wi-Fi connection
|
||||
active_wifi=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d':' -f2)
|
||||
|
||||
# Get list of available Wi-Fi networks, exclude the active one if there is one
|
||||
wifi_list=$(nmcli --fields "SECURITY,SSID" device wifi list | sed 1d | sed 's/ */ /g' \
|
||||
| sed -E "s/WPA*.?\S/ /g" | sed "s/^--/ /g" | sed "s/ //g" | sed "/--/d")
|
||||
|
||||
# Remove the active Wi-Fi from the list if it exists
|
||||
if [[ -n "$active_wifi" ]]; then
|
||||
wifi_list=$(echo "$wifi_list" | grep -v "$active_wifi")
|
||||
fi
|
||||
|
||||
# Get current Wi-Fi state (enabled/disabled)
|
||||
connected=$(nmcli -fields WIFI g)
|
||||
if [[ "$connected" =~ "enabled" ]]; then
|
||||
toggle=" Disable"
|
||||
elif [[ "$connected" =~ "disabled" ]]; then
|
||||
toggle=" Enable"
|
||||
else
|
||||
notify-send "Error" "Unable to determine Wi-Fi state."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Icons for UI
|
||||
wifi_icon=" "
|
||||
active_icon=" "
|
||||
|
||||
# Build the menu: Show active Wi-Fi at top only if it exists
|
||||
if [[ -n "$active_wifi" ]]; then
|
||||
wifi_menu="$active_icon $active_wifi\n$wifi_list"
|
||||
else
|
||||
wifi_menu="$wifi_list"
|
||||
fi
|
||||
|
||||
# Add toggle Wi-Fi state option at the top
|
||||
wifi_menu="$toggle\n$wifi_menu"
|
||||
|
||||
# Prompt user to choose a network or toggle Wi-Fi state
|
||||
chosen_network=$(echo -e "$wifi_menu" | uniq -u | rofi -dmenu -i -selected-row 1 -p "Wi-Fi SSID: ")
|
||||
|
||||
# Get the chosen network ID (strip the icon)
|
||||
chosen_id="${chosen_network:3}"
|
||||
|
||||
# If nothing was selected, exit cleanly
|
||||
if [[ -z "$chosen_network" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Enable or disable Wi-Fi
|
||||
if [[ "$chosen_network" = " Enable" ]]; then
|
||||
nmcli radio wifi on && notify-send "Wi-Fi Enabled"
|
||||
exit 0
|
||||
elif [[ "$chosen_network" = " Disable" ]]; then
|
||||
nmcli radio wifi off && notify-send "Wi-Fi Disabled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Connection logic
|
||||
success_message="You are now connected to the Wi-Fi network \"$chosen_id\"."
|
||||
|
||||
# Check if the chosen network is saved
|
||||
saved_connections=$(nmcli -g NAME connection)
|
||||
if [[ $(echo "$saved_connections" | grep -w "$chosen_id") == "$chosen_id" ]]; then
|
||||
# Connect to the saved network
|
||||
if nmcli connection up id "$chosen_id" | grep -q "successfully"; then
|
||||
notify-send "$wifi_icon Connection Established" "$success_message"
|
||||
else
|
||||
notify-send "Error" "Failed to connect to \"$chosen_id\"."
|
||||
fi
|
||||
else
|
||||
# Prompt for password if network is protected
|
||||
if [[ "$chosen_network" =~ "" ]]; then
|
||||
wifi_password=$(rofi -dmenu -password -p "Enter Password for \"$chosen_id\":")
|
||||
|
||||
# Exit if no password is provided
|
||||
if [[ -z "$wifi_password" ]]; then
|
||||
notify-send "Error" "Password required for \"$chosen_id\"."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Attempt to connect to the new network (with or without password)
|
||||
if [[ -n "$wifi_password" ]]; then
|
||||
if nmcli device wifi connect "$chosen_id" password "$wifi_password" | grep -q "successfully"; then
|
||||
notify-send "Connection Established" "$success_message"
|
||||
else
|
||||
notify-send "Error" "Failed to connect to \"$chosen_id\"."
|
||||
fi
|
||||
else
|
||||
# Connect to an open network
|
||||
if nmcli device wifi connect "$chosen_id" | grep -q "successfully"; then
|
||||
notify-send "Connection Established" "$success_message"
|
||||
else
|
||||
notify-send "Error" "Failed to connect to \"$chosen_id\"."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue