66 lines
1.7 KiB
Bash
Executable File
66 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Set this variable to control the output
|
|
# Set to "true" to show SSID, "false" to show "Connected"
|
|
# show_ssid=false
|
|
|
|
# Read the wifi-mode alias from hyprlock.conf
|
|
show_ssid=$(grep -oP '^\$wifi-mode\s*=\s*\K\S+' ~/.config/hypr/hyprlock.conf)
|
|
|
|
# Check if the SSID was successfully extracted else fallback?!
|
|
if [ -z "$show_ssid" ]; then
|
|
show_ssid=false
|
|
fi
|
|
|
|
# Check if any Ethernet connection is active
|
|
ethernet_connected=$(nmcli -t -f DEVICE,TYPE,STATE dev | grep -E 'ethernet:connected')
|
|
|
|
# If Ethernet
|
|
if [ -n "$ethernet_connected" ]; then
|
|
echo " Ethernet"
|
|
exit 0
|
|
fi
|
|
|
|
# Get Wi-Fi connection status
|
|
wifi_status=$(nmcli -t -f WIFI g)
|
|
|
|
# Check if Wi-Fi is enabled
|
|
if [ "$wifi_status" != "enabled" ]; then
|
|
echo " Wi-Fi Off"
|
|
exit 0
|
|
fi
|
|
|
|
# Get active Wi-Fi connection details
|
|
wifi_info=$(nmcli -t -f ACTIVE,SSID,SIGNAL dev wifi | grep '^yes')
|
|
|
|
# If no active connection, show "Disconnected"
|
|
if [ -z "$wifi_info" ]; then
|
|
echo " No Wi-Fi"
|
|
exit 0
|
|
fi
|
|
|
|
# Extract SSID
|
|
ssid=$(echo "$wifi_info" | cut -d':' -f2)
|
|
|
|
# Extract signal strength
|
|
signal_strength=$(echo "$wifi_info" | cut -d':' -f3)
|
|
|
|
# Define Wi-Fi icons based on signal strength
|
|
wifi_icons=("" "" "" "" "") # From low to high signal
|
|
|
|
# Clamp signal strength between 0 and 100
|
|
signal_strength=$((signal_strength < 0 ? 0 : (signal_strength > 100 ? 100 : signal_strength)))
|
|
|
|
# Calculate the icon index based on signal strength
|
|
icon_index=$((signal_strength / 25))
|
|
|
|
# Get the corresponding icon
|
|
wifi_icon=${wifi_icons[$icon_index]}
|
|
|
|
# Output based on show_ssid variable
|
|
if [ "$show_ssid" = true ]; then
|
|
echo "$wifi_icon $ssid"
|
|
else
|
|
echo "$wifi_icon Connected"
|
|
fi
|