Skip to content

Releases: zaolin/traytail

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 19:23

traytail v0.1.0

First release. A minimal Tailscale tray icon for Wayland bars that host the
StatusNotifierItem
protocol — built and tested against ashell.

No GUI toolkit: pure Go, one dependency (github.com/godbus/dbus/v5), no asset files.

Highlights

  • Status icon with four states: connected (filled), offline (hollow), exit node in use (green ring), login required / captive portal (amber)
  • Exit nodes with a usable UI:
    • Full city/country labels from the tailnet's own Location data (no hostname hunting)
    • Active country hoisted to the top of the Mullvad list, ●/○ radio markers everywhere, explicit Off entry
    • Active nodes matched by Tailscale IP (rename-proof)
  • Smart auto (replaces native auto:any): away from home → own exit node, at home → last-used Mullvad node (persisted across restarts). Re-applies on reconnect and profile switch; manual picks always win
  • Captive portal handling: reads NetworkManager over DBus (no nmcli shell-outs), disconnects tailscale when a Wi-Fi portal hijacks the network, opens the discovered login page in chromium, and reconnects once the portal clears — with minute-level fresh checks, flap protection, and a gateway-fallback login URL
  • Multiple profiles: switch accounts from the tray; works while disconnected (switch = switch + connect)
  • Deselect the own exit node with one click → applies the last-used Mullvad node

Install

sudo make install            # build + install to /usr/local/bin
# or without root:
make install PREFIX=$HOME/.local

Requirements: Go ≥ 1.24, tailscale CLI in $PATH, tailscaled running, sudo tailscale set --operator=$USER once.

Notes

  • Works with any SNI host (ashell, waybar, KDE Plasma) — ashell is the reference and tested host
  • For full portal-detection capability, NetworkManager's connectivity check should be enabled (some distros ship it off) and the binary benefits from cap_net_admin (granted by sudo make install) so probes can bypass an active tailscale tunnel

Quality

  • Unit + DBus integration tests, run with -race in CI; ~90% statement coverage