mirror of
https://codeberg.org/tmayoff/.dotfiles.git
synced 2025-12-06 08:48:34 -05:00
Reorganized
This commit is contained in:
parent
4cd0255ba4
commit
e42e996e75
21 changed files with 2397 additions and 965 deletions
126
dot_config/flake/home/waybar/mechabar/scripts/wifi-menu.sh
Executable file
126
dot_config/flake/home/waybar/mechabar/scripts/wifi-menu.sh
Executable file
|
|
@ -0,0 +1,126 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Author: Jesse Mirabel (@sejjy)
|
||||
# GitHub: https://github.com/sejjy/mechabar
|
||||
|
||||
# Rofi config
|
||||
config="$HOME/.config/rofi/wifi-menu.rasi"
|
||||
|
||||
options=$(
|
||||
echo "Manual Entry"
|
||||
echo "Disable Wi-Fi"
|
||||
)
|
||||
option_disabled="Enable Wi-Fi"
|
||||
|
||||
# Rofi window override
|
||||
override_ssid="entry { placeholder: \"Enter SSID\"; } listview { enabled: false; }"
|
||||
override_password="entry { placeholder: \"Enter password\"; } listview { enabled: false; }"
|
||||
override_disabled="mainbox { children: [ listview ]; } listview { lines: 1; padding: 6px; }"
|
||||
|
||||
# Prompt for password
|
||||
get_password() {
|
||||
rofi -dmenu -password -config "${config}" -theme-str "${override_password}" -p " " || pkill -x rofi
|
||||
}
|
||||
|
||||
while true; do
|
||||
wifi_list() {
|
||||
nmcli --fields "SECURITY,SSID" device wifi list |
|
||||
tail -n +2 | # Skip the header line from nmcli output
|
||||
sed 's/ */ /g' | # Replace multiple spaces with a single space
|
||||
sed -E "s/WPA*.?\S/ /g" | # Replace 'WPA*' with a Wi-Fi lock icon
|
||||
sed "s/^--/ /g" | # Replace '--' (open networks) with an open Wi-Fi icon
|
||||
sed "s/ //g" | # Remove duplicate Wi-Fi lock icons
|
||||
sed "/--/d" | # Remove lines containing '--' (empty SSIDs)
|
||||
awk '!seen[$0]++' # Filter out duplicate SSIDs
|
||||
}
|
||||
|
||||
# Get Wi-Fi status
|
||||
wifi_status=$(nmcli -fields WIFI g)
|
||||
|
||||
case "$wifi_status" in
|
||||
*"enabled"*)
|
||||
selected_option=$(echo "$options"$'\n'"$(wifi_list)" |
|
||||
rofi -dmenu -i -selected-row 1 -config "${config}" -p " " || pkill -x rofi)
|
||||
;;
|
||||
*"disabled"*)
|
||||
selected_option=$(echo "$option_disabled" |
|
||||
rofi -dmenu -i -config "${config}" -theme-str "${override_disabled}" || pkill -x rofi)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Extract selected SSID
|
||||
read -r selected_ssid <<<"${selected_option:3}"
|
||||
|
||||
# Actions based on selected option
|
||||
case "$selected_option" in
|
||||
"")
|
||||
exit
|
||||
;;
|
||||
"Enable Wi-Fi")
|
||||
notify-send "Scanning for networks..."
|
||||
nmcli radio wifi on
|
||||
nmcli device wifi rescan
|
||||
sleep 3
|
||||
;;
|
||||
"Disable Wi-Fi")
|
||||
notify-send "Wi-Fi Disabled"
|
||||
nmcli radio wifi off
|
||||
exit
|
||||
;;
|
||||
"Manual Entry")
|
||||
# Prompt for SSID
|
||||
manual_ssid=$(rofi -dmenu -config "${config}" -theme-str "${override_ssid}" -p " " || pkill -x rofi)
|
||||
|
||||
# Exit if no option is selected
|
||||
if [ -z "$manual_ssid" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
# Prompt for Wi-Fi password
|
||||
wifi_password=$(get_password)
|
||||
|
||||
if [ -z "$wifi_password" ]; then
|
||||
# Without password
|
||||
if nmcli device wifi connect "$manual_ssid" | grep -q "successfully"; then
|
||||
notify-send "Connected to \"$manual_ssid\"."
|
||||
exit
|
||||
else
|
||||
notify-send "Failed to connect to \"$manual_ssid\"."
|
||||
fi
|
||||
else
|
||||
# With password
|
||||
if nmcli device wifi connect "$manual_ssid" password "$wifi_password" | grep -q "successfully"; then
|
||||
notify-send "Connected to \"$manual_ssid\"."
|
||||
exit
|
||||
else
|
||||
notify-send "Failed to connect to \"$manual_ssid\"."
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Get saved connections
|
||||
saved_connections=$(nmcli -g NAME connection)
|
||||
|
||||
if echo "$saved_connections" | grep -qw "$selected_ssid"; then
|
||||
if nmcli connection up id "$selected_ssid" | grep -q "successfully"; then
|
||||
notify-send "Connected to \"$selected_ssid\"."
|
||||
exit
|
||||
else
|
||||
notify-send "Failed to connect to \"$selected_ssid\"."
|
||||
fi
|
||||
else
|
||||
# Handle secure network connection
|
||||
if [[ "$selected_option" =~ ^"" ]]; then
|
||||
wifi_password=$(get_password)
|
||||
fi
|
||||
|
||||
if nmcli device wifi connect "$selected_ssid" password "$wifi_password" | grep -q "successfully"; then
|
||||
notify-send "Connected to \"$selected_ssid\"."
|
||||
exit
|
||||
else
|
||||
notify-send "Failed to connect to \"$selected_ssid\"."
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
Loading…
Add table
Add a link
Reference in a new issue