summaryrefslogtreecommitdiff
path: root/ar/.local/bin/statusbar/sb-internet
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.local/bin/statusbar/sb-internet')
-rwxr-xr-xar/.local/bin/statusbar/sb-internet52
1 files changed, 46 insertions, 6 deletions
diff --git a/ar/.local/bin/statusbar/sb-internet b/ar/.local/bin/statusbar/sb-internet
index df43676..baa5ebd 100755
--- a/ar/.local/bin/statusbar/sb-internet
+++ b/ar/.local/bin/statusbar/sb-internet
@@ -4,34 +4,74 @@
# Show 🌐 if connected to ethernet or ❎ if none.
# Show 🛰️ if a vpn connection is active
+eth_con="$(nmcli -t -f NAME,TYPE,DEVICE connection show |
+ awk -F: '$2=="ethernet" && $3!="" { print $1; exit }')"
+
+wifi_con="$(nmcli -t -f NAME,TYPE connection show |
+ awk -F: '$2=="wifi" { print $1; exit }')"
+
+if [ -n "$eth_con" ]; then
+ nmcli connection modify "$eth_con" ipv4.method auto
+ nmcli connection modify "$eth_con" ipv4.never-default no
+ nmcli connection modify "$eth_con" ipv4.dns-priority -42
+ nmcli connection modify "$eth_con" ipv4.route-metric 100
+ nmcli connection modify "$eth_con" connection.autoconnect yes
+fi
+
+if [ -n "$wifi_con" ]; then
+ nmcli connection modify "$wifi_con" ipv4.dns-priority 100
+ nmcli connection modify "$wifi_con" ipv4.route-metric 600
+fi
+
case $BLOCK_BUTTON in
1)
"$TERMINAL" -e nmtui
pkill -RTMIN+7 dwmblocks
;;
+2)
+ wifi_dev="$(nmcli -t -f DEVICE,TYPE device |
+ awk -F: '$2=="wifi" { print $1; exit }')"
+
+ wifi_state="$(nmcli -t -f DEVICE,STATE device |
+ awk -F: -v dev="$wifi_dev" '$1==dev { print $2 }')"
+
+ if [ "$wifi_state" = "connected" ]; then
+ nmcli radio wifi off
+ notify-send "Wi-Fi" "Wi-Fi disconnected"
+ else
+ nmcli radio wifi on
+ notify-send "Wi-Fi" "Wi-Fi connected"
+ fi
+
+ pkill -RTMIN+7 dwmblocks
+ ;;
3) notify-send "🌐 Internet module" "\- Left click to connect
❌: wifi disabled
📡: no wifi connection
🛜: wifi connection with quality
❎: no ethernet
🌐: ethernet working
-🛰️: vpn is active
+🛰: vpn is active
" ;;
6) setsid -f "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
# Wifi
-if grep -q 'up' /sys/class/net/w*/operstate; then
- wifiicon="$(awk '/^\s*w/ { print "🛜" int($3 * 100 / 70) "%" }' /proc/net/wireless)"
-elif grep -q 'down' /sys/class/net/w*/operstate; then
- grep -q '0x1003' /sys/class/net/w*/flags && wifiicon="📡" || wifiicon="❌"
+if grep -q 'up' /sys/class/net/w*/operstate 2>/dev/null; then
+ if grep -q '^\s*w' /proc/net/wireless; then
+ wifiicon="$(awk '/^\s*w/ { print "🛜" int($3 * 100 / 70) "%" }' /proc/net/wireless)"
+ else
+ wifiicon="📡"
+ fi
+elif grep -q 'down' /sys/class/net/w*/operstate 2>/dev/null; then
+ wifiicon="❌"
fi
# Ethernet
grep -q 'up' /sys/class/net/e*/operstate && ethericon="🌐" || ethericon="❎"
# TUN
-[ -n "$(cat /sys/class/net/tun*/operstate 2>/dev/null)" ] && tunicon="🛰️"
+grep -q 'up' /sys/class/net/tun*/operstate 2>/dev/null && tunicon="🛰"
icons=""
[ -n "$wifiicon" ] && icons="${icons}$wifiicon "