#!/bin/bash set -eu [ -n "${DEBUG:-}" ] && set -x update() { local ts_acct ts_ip local class text alt if tailscale status | grep -q stopped; then return 1 fi ts_ip=$(tailscale ip -1 || return 1) ts_acct=$(tailscale switch --list 2>/dev/null | awk '/\*$/{ print gensub(/^.* ([^ ]+)\*$/, "\\1", "1") }') alt="$ts_acct" class="$ts_acct" tip="$ts_ip" # only display account name when not "main" [ "$ts_acct" = "main" ] || text=$ts_acct en_name=$(tailscale exit-node list | grep selected) if test -n "$en_name"; then alt="exit-node" class="exit-node" tip="$(awk '{printf "%s (%s)", $2, $1}' <<<"$en_name")" fi jq -nrc '{text:$text,tooltip:$tip,class:$class,alt:$alt}' \ --arg tip "${tip:?}" \ --arg class "${class:?}" \ --arg alt "${alt:?}" \ --arg text "${text:-}" } update || echo '{}'