Skip to content

About

Trayscale fork with Automatic exit-node modes, verified Mullvad failover, and daemon reconnect recovery

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Trayscale

This is itsAnchorpoint's fork of DeedleFake/Trayscale, based on upstream v0.20.0. It adds persistent Automatic exit-node selection, verified Mullvad failover with connection checks, and IPN watcher recovery after daemon restarts.

Install this fork on Arch / CachyOS

git clone https://github.com/itsAnchorpoint/trayscale.git
cd trayscale/packaging/arch
makepkg -si

The package is named trayscale-anchorpoint and replaces the installed trayscale package through a package conflict. It keeps the same executable, desktop entry, settings, and autostart integration. Ordinary AUR updates for trayscale will no longer replace the fork. Fork updates are installed from this repository; see fork maintenance.

The Flathub, AUR, and go install ...@latest instructions below install upstream.

Go Report Card

Trayscale is an unofficial GUI interface for the Tailscale daemon particularly for use on Linux, as no official Linux GUI client exists. It provides a basic system tray icon and a fairly comprehensive UI with support for many of Tailscale's features.

Disclaimer: This project is in a beta state. There may still be undiscovered bugs or compatibility issues. Use at your own risk.

screenshot

Tailscale Config

Trayscale interfaces with the Tailscale daemon, tailscaled, to perform many of its operations. In order for this to work, the daemon must have been configured with the current user as the "operator". To do this, run sudo tailscale set --operator=$USER from the command-line at least once manually.

Exit Node Modes

The exit-node page supports three mutually exclusive modes:

  • Automatic uses Tailscale's persistent auto:any selection and continues working when Trayscale is closed. It requires Tailscale 1.98.10 or newer and can choose any exit node permitted by tailnet policy.
  • Automatic with Connection Checks monitors real TCP egress and switches between Mullvad exit nodes after confirmed failures. Trayscale must remain running for these additional checks.
  • Specific Exit Node pins the selected node until it is changed manually.

Manual exit-node changes always take precedence over connection checks. Trayscale does not automatically disable an exit node as part of failure recovery.

Installation

Download on Flathub

Note that the above config note about the current user being designated as an "operator" still applies to the Flatpak version of this app. However, the tailscale client is bundled into the Flatpak and thus does not need to be in your $PATH.

AUR

If you are on Arch Linux or a derivative, Trayscale is available from the AUR.

Manual

First, make sure that you have dependencies installed:

  • Go >= 1.24
  • GTK >= 4.0
  • Libadwaita >= 1.9

The main Trayscale binary can be installed with go install:

$ go install deedles.dev/trayscale/cmd/trayscale@latest

If you would like, you can also copy the .desktop file, the icon, and other pieces of extra metadata into the places that they need to be put to function properly:

  • dev.deedles-trayscale.desktop -> $HOME/.local/share/applications/
  • dev.deedles.Trayscale.png -> $HOME/.local/share/icons/hicolor/256x256/apps/

Note that without copying both of these files into the correct locations, notifications will likely not function correctly in GNOME. Also keep in mind that if the trayscale binary is not in your $PATH in a way that the desktop environment can locate then the .desktop file will not be considered valid. If this is an issue, modify the file manually and change the Exec= line to point directly to the binary with an absolute path.

macOS

First of all, please note that macOS support is not maintained or tested by the primary developer of Trayscale. Also note that the tray icon will not work in macOS.

The simplest way to install Trayscale on macOS is via Nixpkgs' unstable channel. Note that it will need to be built from source if a binary cache is unavailable and the build can take some time.

To build it locally without Nix, first make sure that you have installed the Go compiler, as well as necessary dependencies. The dependencies are available as the following Homebrew packages:

  • libadwaita
  • gtk4
  • gobject-introspection
  • harfbuzz

Then, run the following in the root of the repository:

$ ./dist.sh build
$ ./dist.sh install-macos

Localization

Trayscale can display UI strings in other languages via gettext catalogs under po/. Go-constructed strings use gotext; GtkBuilder labels marked translatable="yes" use the same catalogs through libintl. See po/README.md. Prefer LANGUAGE=ja (or install the matching system locale); bare LANG=ja without a generated libc locale is sanitized so GTK does not hang.

Donate

Buy Me A Coffee

About

Trayscale fork with Automatic exit-node modes, verified Mullvad failover, and daemon reconnect recovery

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages