#!/bin/sh

int() { # Type of interface & status

    # If active ethernet, just exit with icon
    grep -xq 'up' /sys/class/net/e*/operstate 2>/dev/null && echo "󰛳" && return 0

    # If active WiFi, print link strength
    if grep -xq 'up' /sys/class/net/w*/operstate 2>/dev/null ; then
        strength="$(awk 'NR==3 {printf("%.0f\n",$3*10/7)}' /proc/net/wireless)"
        case 1 in
            $((strength >= 85))  ) icon="󰤨" ;;
            $((strength >= 65))  ) icon="󰤥" ;;
            $((strength >= 45))  ) icon="󰤢" ;;
            $((strength >= 25))  ) icon="󰤟" ;;
            $((strength >= 0))   ) icon="󰤯" ;;
        esac
        echo "$icon"
        return 0
    fi

    # If down interfaces, exit with icon
    grep -xq 'down' /sys/class/net/w*/operstate 2>/dev/null && echo "󰤮" && return 0
    grep -xq 'down' /sys/class/net/e*/operstate 2>/dev/null && echo "󰲛" && return 0

    return 1
}

# Run 'int'
icon=$(int)

if [ "$?" != 0 ] ; then
    echo "Failed to get interface type"
    exit 1
fi

# Check if a VPN is enabled
vpn="$( \
    sed "s/.*//" /sys/class/net/tun*/operstate 2>/dev/null
    sed "s/.*//" /sys/class/net/wg*/operstate 2>/dev/null \
    )"

# If so, change icon
if [ -n "$vpn" ] ; then
    icon="$(printf '%s' "$icon" | sed '
         s/󰤨/󰤪/;
         s/󰤥/󰤧/;
         s/󰤢/󰤤/;
         s/󰤟/󰤡/;
         s/󰤯/󰤬/;
         ')"
fi

# Print $info
printf "%s" "$icon"