summary refs log tree commit diff
path: root/.config/waybar/module-tailscale.sh
blob: 53b0409eade915de6ca922b50cfd67f1e20da9a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/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"
	# only display account name when not "main"
	[ "$ts_acct" = "main" ] || text=$ts_acct

	if tailscale exit-node list | grep -q selected; then
		alt="exit-node"
		class="exit-node"
	fi

	jq -nrc '{text:$text,tooltip:$tip,class:$class,alt:$alt}' \
		--arg tip "${ts_ip:?}" \
		--arg class "${class:?}" \
		--arg alt "${alt:?}" \
		--arg text "${text:-}"
}

update || echo '{}'