#!/usr/bin/env bash source "$CONFIG_DIR/colors.sh" source "$CONFIG_DIR/icons.sh" CACHE="/tmp/sketchybar_${NAME}.txt" case "$SENDER" in mouse.entered) [ -f "$CACHE" ] && sketchybar --set "$NAME.details" label="$(cat "$CACHE")" sketchybar --set "$NAME" popup.drawing=on; exit 0 ;; mouse.exited) sketchybar --set "$NAME" popup.drawing=off; exit 0 ;; esac SERVICE="$(route -n get default 2>/dev/null | awk '/interface:/{print $2}')" IP="$(ipconfig getifaddr "$SERVICE" 2>/dev/null)" if [ -z "$IP" ]; then sketchybar --set "$NAME" label="$NET_OFF" printf '%s' "Disconnected" > "$CACHE" exit 0 fi WIFI_DEV="$(networksetup -listallhardwareports 2>/dev/null | awk '/Wi-Fi/{getline; print $2}')" if [ "$SERVICE" = "$WIFI_DEV" ]; then ICON=$WIFI_4; TYPE="Wi-Fi"; else ICON=$ETHERNET; TYPE="Ethernet"; fi sketchybar --set "$NAME" label="$IP $ICON" # ---- popup details: interface, ip/cidr, gateway, SSID ---- MASK="$(ifconfig "$SERVICE" 2>/dev/null | awk '/inet /{print $4; exit}')" CIDR="" if [ -n "$MASK" ]; then n=$(( MASK )); c=0 while [ "$n" -gt 0 ]; do c=$(( c + (n & 1) )); n=$(( n >> 1 )); done CIDR="$c" fi GW="$(route -n get default 2>/dev/null | awk '/gateway:/{print $2}')" SSID="" if [ "$TYPE" = "Wi-Fi" ]; then SSID="$(networksetup -getairportnetwork "$SERVICE" 2>/dev/null | sed -n 's/^Current Wi-Fi Network: //p')" fi LINE="$SERVICE · $TYPE · ${IP}${CIDR:+/$CIDR}" [ -n "$GW" ] && LINE="$LINE · gw $GW" [ -n "$SSID" ] && LINE="$LINE · $SSID" printf '%s' "$LINE" > "$CACHE"