#!/bin/sh . ../mpanel.subr . ../aux/secrets align="right" background="$(color 11)" foreground="$(color 3)" waitFunc="sleep 1" clickFunc="toggle flag" flag="true" connected() { state="$(iwctl station $wifi_if show | grep State | awk '{print $2}')" [ "$state" = "connected" ] && return 0 return 1 } internet() { if nc -zw1 google.com 443; then return 0 fi return 1 } vpn() { if ping -c 1 -w 5 $vpn_ip >/dev/null 2>&1; then return 0 fi return 1 } home() { if ping -c 1 -w 5 $home_ip >/dev/null 2>&1; then return 0 fi return 1 } store_speeds() { R1="$(cat /sys/class/net/$wifi_if/statistics/rx_bytes)" T1="$(cat /sys/class/net/$wifi_if/statistics/tx_bytes)" sleep 1 R2="$(cat /sys/class/net/$wifi_if/statistics/rx_bytes)" T2="$(cat /sys/class/net/$wifi_if/statistics/tx_bytes)" r="$(echo $R1 $R2 | awk '{r=$2-$1 ; rSuf="B " ; if (r >= 1000) {r=r/1000; rSuf="KB";} if (r >= 1000) {r=r/1000; rSuf="MB";} printf "%3.0f", r; printf rSuf;}')" t="$(echo $T1 $T2 | awk '{t=$2-$1 ; tSuf="B " ; if (t >= 1000) {t=t/1000; tSuf="KB";} if (t >= 1000) {t=t/1000; tSuf="MB";} printf "%3.0f", t; printf tSuf;}')" echo " $r 祝$t" | atomic_write "$XDG_RUNTIME_DIR/wifi-speeds.tmp" } store_symbol() { if connected; then if internet; then if vpn; then out="直" elif home; then out="" else out="" fi else out="" fi else out="睊" fi echo "$out" | atomic_write "$XDG_RUNTIME_DIR/wifi-symbol.tmp" } print_stats() { if [ "$flag" = "true" ]; then echo " $(cat "$XDG_RUNTIME_DIR/wifi-symbol.tmp")$(cat "$XDG_RUNTIME_DIR/wifi-speeds.tmp") " else echo " $(cat "$XDG_RUNTIME_DIR/wifi-symbol.tmp") " fi } kickoff store_speeds & kickoff store_symbol 5 & loop print_stats