From a525d8ee68996e38b84b7cb5df87472c91504887 Mon Sep 17 00:00:00 2001 From: Techmore Date: Thu, 29 Oct 2026 09:33:16 -0400 Subject: [PATCH] Tailscale: native Pantheon app for the tailnet Replaces the launcher that opened Tailscale's read-only web page in a browser. Status card with connect switch, exit node picker and LAN access, device list (online first, search, copy IP / copy ssh command), settings (DNS, subnet routes, incoming connections, SSH server), login and service-down states. Refused changes spring back and show the one-time operator command. Follows APP-CONVENTIONS (registered in conventions.json), own CI workflow, fixture screenshots in light and dark. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/mseries-tailscale.yml | 74 ++ rust/Cargo.lock | 11 + rust/Cargo.toml | 2 +- .../data/conventions.json | 8 + rust/mseries-tailscale/Cargo.toml | 15 + rust/mseries-tailscale/README.md | 56 ++ .../mseries-tailscale-offline-symbolic.svg | 15 + .../data/mseries-tailscale-symbolic.svg | 15 + ...rg.techmore.mseries.Tailscale-symbolic.svg | 15 + .../org.techmore.mseries.Tailscale.desktop | 12 + .../data/org.techmore.mseries.Tailscale.svg | 21 + rust/mseries-tailscale/data/style.css | 26 + rust/mseries-tailscale/docs/login-light.png | Bin 0 -> 24527 bytes rust/mseries-tailscale/docs/main-dark.png | Bin 0 -> 63524 bytes rust/mseries-tailscale/docs/main-light.png | Bin 0 -> 64088 bytes .../docs/notrunning-dark.png | Bin 0 -> 29723 bytes rust/mseries-tailscale/docs/setup-light.png | Bin 0 -> 69276 bytes rust/mseries-tailscale/docs/stopped-light.png | Bin 0 -> 65578 bytes rust/mseries-tailscale/fixtures/prefs.json | 11 + rust/mseries-tailscale/fixtures/status.json | 200 +++++ rust/mseries-tailscale/install-local.sh | 26 + rust/mseries-tailscale/rustfmt.toml | 2 + rust/mseries-tailscale/snapshot.sh | 23 + rust/mseries-tailscale/src/cli.rs | 136 +++ rust/mseries-tailscale/src/lib.rs | 7 + rust/mseries-tailscale/src/main.rs | 95 ++ rust/mseries-tailscale/src/model.rs | 310 +++++++ rust/mseries-tailscale/src/strings.rs | 7 + rust/mseries-tailscale/src/ui/mod.rs | 3 + rust/mseries-tailscale/src/ui/window.rs | 843 ++++++++++++++++++ 30 files changed, 1932 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/mseries-tailscale.yml create mode 100644 rust/mseries-tailscale/Cargo.toml create mode 100644 rust/mseries-tailscale/README.md create mode 100644 rust/mseries-tailscale/data/mseries-tailscale-offline-symbolic.svg create mode 100644 rust/mseries-tailscale/data/mseries-tailscale-symbolic.svg create mode 100644 rust/mseries-tailscale/data/org.techmore.mseries.Tailscale-symbolic.svg create mode 100644 rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.desktop create mode 100644 rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.svg create mode 100644 rust/mseries-tailscale/data/style.css create mode 100644 rust/mseries-tailscale/docs/login-light.png create mode 100644 rust/mseries-tailscale/docs/main-dark.png create mode 100644 rust/mseries-tailscale/docs/main-light.png create mode 100644 rust/mseries-tailscale/docs/notrunning-dark.png create mode 100644 rust/mseries-tailscale/docs/setup-light.png create mode 100644 rust/mseries-tailscale/docs/stopped-light.png create mode 100644 rust/mseries-tailscale/fixtures/prefs.json create mode 100644 rust/mseries-tailscale/fixtures/status.json create mode 100755 rust/mseries-tailscale/install-local.sh create mode 100644 rust/mseries-tailscale/rustfmt.toml create mode 100755 rust/mseries-tailscale/snapshot.sh create mode 100644 rust/mseries-tailscale/src/cli.rs create mode 100644 rust/mseries-tailscale/src/lib.rs create mode 100644 rust/mseries-tailscale/src/main.rs create mode 100644 rust/mseries-tailscale/src/model.rs create mode 100644 rust/mseries-tailscale/src/strings.rs create mode 100644 rust/mseries-tailscale/src/ui/mod.rs create mode 100644 rust/mseries-tailscale/src/ui/window.rs diff --git a/.github/workflows/mseries-tailscale.yml b/.github/workflows/mseries-tailscale.yml new file mode 100644 index 0000000..d1cc0ea --- /dev/null +++ b/.github/workflows/mseries-tailscale.yml @@ -0,0 +1,74 @@ +name: Tailscale app + +on: + workflow_dispatch: + push: + branches: [dev, main] + paths: + - "rust/mseries-pantheon-kit/**" + - "rust/mseries-tailscale/**" + - "rust/Cargo.toml" + - "rust/Cargo.lock" + - ".github/workflows/mseries-tailscale.yml" + pull_request: + paths: + - "rust/mseries-pantheon-kit/**" + - "rust/mseries-tailscale/**" + - "rust/Cargo.toml" + - "rust/Cargo.lock" + - ".github/workflows/mseries-tailscale.yml" + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + build: + name: Tailscale test/build/render (arm64) + runs-on: ubuntu-26.04-arm + timeout-minutes: 30 + steps: + - uses: actions/checkout@v7 + + - uses: ./.github/actions/fast-apt + + - name: Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + build-essential pkg-config cargo rustc rustfmt rust-clippy \ + libgtk-4-dev libgranite-7-dev desktop-file-utils xvfb xauth dbus-x11 python3 + + - uses: actions/cache@v6 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + rust/target + key: mseries-tailscale-${{ runner.arch }}-${{ hashFiles('rust/Cargo.lock') }} + restore-keys: mseries-tailscale-${{ runner.arch }}- + + - name: Formatting and strict lint + run: | + cargo fmt --manifest-path rust/Cargo.toml -p mseries-tailscale --check + cargo clippy --manifest-path rust/Cargo.toml -p mseries-tailscale --locked -- -D warnings + + - name: Unit tests and app conventions + run: | + cargo test --manifest-path rust/Cargo.toml -p mseries-tailscale --locked + cargo test --manifest-path rust/Cargo.toml -p mseries-pantheon-kit --test conventions --locked + + - name: Validate desktop metadata + run: desktop-file-validate rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.desktop + + - name: Render the window from fixture status, light and dark + run: bash rust/mseries-tailscale/snapshot.sh "$RUNNER_TEMP/tailscale-snapshots" + + - uses: actions/upload-artifact@v7 + with: + name: tailscale-snapshots-${{ github.run_id }} + path: ${{ runner.temp }}/tailscale-snapshots/ + if-no-files-found: error diff --git a/rust/Cargo.lock b/rust/Cargo.lock index d4515bd..d0c0c12 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -2438,6 +2438,17 @@ dependencies = [ "vte4", ] +[[package]] +name = "mseries-tailscale" +version = "0.1.0" +dependencies = [ + "granite-rs", + "gtk4", + "mseries-pantheon-kit", + "serde", + "serde_json", +] + [[package]] name = "mseries-update-core" version = "0.1.0" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 3d5de93..117d7f7 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["mseries-power", "granite-smoke", "mseries-update-core", "mseries-updates", "mseries-diskspace", "mseries-pantheon-kit", "mseries-image-studio", "mseries-ai", "mseries-reply", "mseries-messages", "mseries-system-monitor", "claude-pantheon-rs", "msdk", "mseries-broker", "msdk-gtk", "mseries-dock", "mseries-greeter", "mseries-apple-dev", "torrential", "mseries-signal-history"] +members = ["mseries-power", "granite-smoke", "mseries-update-core", "mseries-updates", "mseries-diskspace", "mseries-pantheon-kit", "mseries-image-studio", "mseries-ai", "mseries-reply", "mseries-messages", "mseries-system-monitor", "claude-pantheon-rs", "msdk", "mseries-broker", "msdk-gtk", "mseries-dock", "mseries-greeter", "mseries-apple-dev", "mseries-tailscale", "torrential", "mseries-signal-history"] resolver = "2" # Smaller, faster binaries for the session components (the compositor runs on diff --git a/rust/mseries-pantheon-kit/data/conventions.json b/rust/mseries-pantheon-kit/data/conventions.json index 45fee60..76a574c 100644 --- a/rust/mseries-pantheon-kit/data/conventions.json +++ b/rust/mseries-pantheon-kit/data/conventions.json @@ -92,6 +92,14 @@ "exempt": { "gettext": "uses Fluent catalogs (i18n-embed; de, en-GB) rather than gettext" } + }, + { + "name": "Tailscale", + "dir": "mseries-tailscale", + "desktop": [ + "org.techmore.mseries.Tailscale.desktop" + ], + "exempt": {} } ] } diff --git a/rust/mseries-tailscale/Cargo.toml b/rust/mseries-tailscale/Cargo.toml new file mode 100644 index 0000000..b3940f9 --- /dev/null +++ b/rust/mseries-tailscale/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "mseries-tailscale" +version = "0.1.0" +edition = "2024" +license = "GPL-3.0-only" +publish = false +description = "Tailscale: a native Pantheon window for your tailnet: connect, exit nodes, devices, copy IP or ssh" + +[dependencies] +mseries-pantheon-kit = { path = "../mseries-pantheon-kit" } +# Same GTK/Granite pins as mseries-apple-dev (see mseries/RUST-UPSTREAM-MAINTENANCE.md). +gtk = { package = "gtk4", version = "0.11", features = ["v4_20"] } +granite = { package = "granite-rs", version = "3.3", features = ["v7_8", "gtk_v4_20"] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/rust/mseries-tailscale/README.md b/rust/mseries-tailscale/README.md new file mode 100644 index 0000000..efd8018 --- /dev/null +++ b/rust/mseries-tailscale/README.md @@ -0,0 +1,56 @@ +# Tailscale + +A native Pantheon window for Tailscale. It replaces the old launcher that opened Tailscale's read-only web page +(`http://100.100.100.100/`) in a browser tab. + +| Connected | Dark | +| --- | --- | +| ![Connected](docs/main-light.png) | ![Connected, dark](docs/main-dark.png) | +| **Disconnected** | **A refused change shows the one-time setup** | +| ![Disconnected](docs/stopped-light.png) | ![Setup banner](docs/setup-light.png) | +| **Logged out** | **Service not running** | +| ![Log in](docs/login-light.png) | ![Not running](docs/notrunning-dark.png) | + +## What it does + +- **Status card:** connected or disconnected, tailnet and account, and a switch that runs `tailscale up` / `down`. + This device's name and IP, with a copy button. +- **Exit node:** pick any device that offers itself as an exit node (`tailscale set --exit-node=IP`), or None, and + allow local network access while using one. +- **Devices:** every device on the tailnet, online first, with IP, OS and when it was last seen. Search with + Ctrl+F. Click a row or the copy button to copy its IP; the terminal button copies `ssh ` + (the MagicDNS name, e.g. `ssh sdolbec-ser8`). +- **Settings:** Tailscale DNS, subnet routes, incoming connections (shields up), and the Tailscale SSH server, + each a `tailscale set` flag. +- **Logged out:** "Log In…" starts `tailscale login` and opens the sign-in page. +- **Service not running:** says so and copies `sudo systemctl enable --now tailscaled`. + +Reading needs no root. Changes need the operator setting; without it Tailscale refuses ("access denied"), every +control springs back to the real state, and the window shows the one-time command with a Copy button: + +```sh +sudo tailscale set --operator=$USER +``` + +The window refreshes every 3 s while it is open, after each change, and on Ctrl+R / F5. + +## Build, install, screenshots + +```sh +rust/mseries-tailscale/install-local.sh # ~/.local, no sudo +rust/mseries-tailscale/snapshot.sh OUT_DIR # light/dark PNGs from fixtures/ under Xvfb +cargo test -p mseries-tailscale # parsing and error classification +``` + +`MSERIES_TAILSCALE_FIXTURES=DIR` makes the app read `status.json` / `prefs.json` from DIR (every change is then +refused, which is how the setup-banner screenshot is made with `MSERIES_TAILSCALE_SNAPSHOT_TOGGLE=1`). + +## Icon + +The app icon and the status icons redraw the Tailscale logo from the dot layout in Tailscale's own tray code, +[`client/systray/logo.go`](https://github.com/tailscale/tailscale/blob/v1.104.4/client/systray/logo.go) +(BSD-3-Clause, © Tailscale Inc & contributors): lit dots when connected, all grey when not. The Tailscale name +and logo are trademarks of Tailscale Inc., used here only to label Tailscale itself. + +The top-panel menu and Work Mode taskbar button live in the OS repo +(techmore/ElementaryOS_MSeries `mseries/tailscale-wingpanel`). diff --git a/rust/mseries-tailscale/data/mseries-tailscale-offline-symbolic.svg b/rust/mseries-tailscale/data/mseries-tailscale-offline-symbolic.svg new file mode 100644 index 0000000..61aab6d --- /dev/null +++ b/rust/mseries-tailscale/data/mseries-tailscale-offline-symbolic.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/rust/mseries-tailscale/data/mseries-tailscale-symbolic.svg b/rust/mseries-tailscale/data/mseries-tailscale-symbolic.svg new file mode 100644 index 0000000..dca170c --- /dev/null +++ b/rust/mseries-tailscale/data/mseries-tailscale-symbolic.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale-symbolic.svg b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale-symbolic.svg new file mode 100644 index 0000000..dca170c --- /dev/null +++ b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale-symbolic.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.desktop b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.desktop new file mode 100644 index 0000000..b6cfe0b --- /dev/null +++ b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Name=Tailscale +GenericName=VPN +Comment=Connect to your tailnet, pick an exit node, and copy any device's IP or ssh command +Exec=mseries-tailscale +Icon=org.techmore.mseries.Tailscale +Terminal=false +Categories=GTK;Network; +Keywords=tailscale;vpn;tailnet;ssh;exit node;network; +StartupNotify=true +StartupWMClass=org.techmore.mseries.Tailscale diff --git a/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.svg b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.svg new file mode 100644 index 0000000..55ac078 --- /dev/null +++ b/rust/mseries-tailscale/data/org.techmore.mseries.Tailscale.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/rust/mseries-tailscale/data/style.css b/rust/mseries-tailscale/data/style.css new file mode 100644 index 0000000..443b0f0 --- /dev/null +++ b/rust/mseries-tailscale/data/style.css @@ -0,0 +1,26 @@ +/* Tailscale window. Theme colours only (APP-CONVENTIONS: no hex literals). */ +.mseries-tailscale .mseries-tailscale-card { + padding: 12px 15px; +} + +.mseries-tailscale .mseries-tailscale-setup { + background-color: alpha(@warning_color, 0.12); + box-shadow: inset 0 0 0 1px alpha(@warning_color, 0.35); +} + +.mseries-tailscale .mseries-tailscale-badge { + border-radius: 999px; + padding: 1px 8px; + font-size: 0.8em; + font-weight: 700; + color: @accent_color; + background-color: alpha(@accent_color, 0.18); +} + +.mseries-tailscale .mseries-tailscale-devices > row { + min-height: 48px; +} + +.mseries-tailscale .mseries-tailscale-dot { + font-size: 0.7em; +} diff --git a/rust/mseries-tailscale/docs/login-light.png b/rust/mseries-tailscale/docs/login-light.png new file mode 100644 index 0000000000000000000000000000000000000000..5810c2ef2675bcebab907be9d3761d79e833fd8b GIT binary patch literal 24527 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 literal 0 HcmV?d00001 diff --git a/rust/mseries-tailscale/docs/main-dark.png b/rust/mseries-tailscale/docs/main-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a4aa62e6d031e9744e2359ab520b03b96ac30453 GIT binary patch literal 63524 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%0DrP`-o4Z>j=@(Vj$!yNfk{?bB-r%z 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%0D`G@~B`PL96_ZE4|=G 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 GYySnBdeb=o literal 0 HcmV?d00001 diff --git a/rust/mseries-tailscale/docs/setup-light.png b/rust/mseries-tailscale/docs/setup-light.png new file mode 100644 index 0000000000000000000000000000000000000000..25a9033d8eaf3c0cba615638f9d5a1244b4df76e GIT binary patch literal 69276 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
suj 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 literal 0 HcmV?d00001 diff --git a/rust/mseries-tailscale/docs/stopped-light.png b/rust/mseries-tailscale/docs/stopped-light.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2169ee5b66c41a55d6cc28184db5aba919f553 GIT binary patch literal 65578 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 z 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 CWa+v9 literal 0 HcmV?d00001 diff --git a/rust/mseries-tailscale/fixtures/prefs.json b/rust/mseries-tailscale/fixtures/prefs.json new file mode 100644 index 0000000..a349f26 --- /dev/null +++ b/rust/mseries-tailscale/fixtures/prefs.json @@ -0,0 +1,11 @@ +{ + "ControlURL": "https://controlplane.tailscale.com", + "RouteAll": false, + "ExitNodeID": "", + "ExitNodeIP": "", + "ExitNodeAllowLANAccess": false, + "CorpDNS": true, + "RunSSH": false, + "WantRunning": true, + "ShieldsUp": false +} diff --git a/rust/mseries-tailscale/fixtures/status.json b/rust/mseries-tailscale/fixtures/status.json new file mode 100644 index 0000000..9b222df --- /dev/null +++ b/rust/mseries-tailscale/fixtures/status.json @@ -0,0 +1,200 @@ +{ + "Version": "1.104.4-t938213198-gd38c96d6a", + "BackendState": "Running", + "AuthURL": "", + "Self": { + "ID": "self", + "HostName": "eos", + "DNSName": "eos.tail1234.ts.net.", + "OS": "linux", + "TailscaleIPs": [ + "100.115.140.33", + "fd7a:115c:a1e0::7c32:8c22" + ], + "Online": true, + "LastSeen": "0001-01-01T00:00:00Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "Peer": { + "nodekey:00": { + "ID": "n0", + "HostName": "CSP-BFS-mini", + "DNSName": "csp-bfs-mini.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.82.173.72", + "fd7a:115c:a1e0::fc01:ad48" + ], + "Online": true, + "LastSeen": "0001-01-01T00:00:00Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:01": { + "ID": "n1", + "HostName": "CSP-Mini", + "DNSName": "csp-mini.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.117.181.76", + "fd7a:115c:a1e0::a001:b553" + ], + "Online": false, + "LastSeen": "2025-09-06T05:26:42.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:02": { + "ID": "n2", + "HostName": "Techmore-10g", + "DNSName": "techmore-10g.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.92.228.81", + "fd7a:115c:a1e0::1932:e451" + ], + "Online": false, + "LastSeen": "2026-08-24T21:09:21.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:03": { + "ID": "n3", + "HostName": "admin’s Mac mini", + "DNSName": "admins-mac-mini.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.116.199.21", + "fd7a:115c:a1e0::5a32:c715" + ], + "Online": false, + "LastSeen": "2025-09-29T14:53:09.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:04": { + "ID": "n4", + "HostName": "elementary-m1", + "DNSName": "elementary-m1.tail1234.ts.net.", + "OS": "linux", + "TailscaleIPs": [ + "100.110.219.14", + "fd7a:115c:a1e0::2432:db0f" + ], + "Online": false, + "LastSeen": "2026-10-14T16:26:08.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:05": { + "ID": "n5", + "HostName": "localhost", + "DNSName": "iphone-14-pro.tail1234.ts.net.", + "OS": "iOS", + "TailscaleIPs": [ + "100.96.99.44", + "fd7a:115c:a1e0::7d32:632c" + ], + "Online": true, + "LastSeen": "0001-01-01T00:00:00Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:06": { + "ID": "n6", + "HostName": "sdolbec-SER8", + "DNSName": "sdolbec-ser8.tail1234.ts.net.", + "OS": "linux", + "TailscaleIPs": [ + "100.127.99.74", + "fd7a:115c:a1e0::a32:634b" + ], + "Online": true, + "LastSeen": "0001-01-01T00:00:00Z", + "ExitNode": true, + "ExitNodeOption": true, + "UserID": 8343998775294178 + }, + "nodekey:07": { + "ID": "n7", + "HostName": "sdolbec’s Mac mini", + "DNSName": "sdolbecs-mac-mini.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.76.227.61", + "fd7a:115c:a1e0::3b32:e33d" + ], + "Online": false, + "LastSeen": "2026-01-31T00:30:30.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:08": { + "ID": "n8", + "HostName": "techmore (2)", + "DNSName": "techmore-2.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.69.38.89", + "fd7a:115c:a1e0::de01:265a" + ], + "Online": false, + "LastSeen": "2026-10-27T17:21:38.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:09": { + "ID": "n9", + "HostName": "techmore’s Mac mini", + "DNSName": "techmores-mac-mini.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.126.148.10", + "fd7a:115c:a1e0::6201:940c" + ], + "Online": false, + "LastSeen": "2026-06-06T17:44:47.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + }, + "nodekey:10": { + "ID": "n10", + "HostName": "techmore’s Mac mini", + "DNSName": "techmores-mac-mini-1.tail1234.ts.net.", + "OS": "macOS", + "TailscaleIPs": [ + "100.103.145.120", + "fd7a:115c:a1e0::6832:9179" + ], + "Online": false, + "LastSeen": "2026-07-04T00:35:09.1Z", + "ExitNode": false, + "ExitNodeOption": false, + "UserID": 8343998775294178 + } + }, + "CurrentTailnet": { + "Name": "example@gmail.com", + "MagicDNSSuffix": "tail1234.ts.net", + "MagicDNSEnabled": true + }, + "User": { + "8343998775294178": { + "ID": 8343998775294178, + "LoginName": "example@gmail.com", + "DisplayName": "Example" + } + }, + "Health": [] +} diff --git a/rust/mseries-tailscale/install-local.sh b/rust/mseries-tailscale/install-local.sh new file mode 100755 index 0000000..e85e9de --- /dev/null +++ b/rust/mseries-tailscale/install-local.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# Install Tailscale for the current user (~/.local), no sudo. PROFILE=debug installs the debug build. +# rust/mseries-tailscale/install-local.sh +set -euo pipefail +here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +id=org.techmore.mseries.Tailscale +profile="${PROFILE:-release}" +flag=(); [[ $profile == release ]] && flag=(--release) +(cd "$here/.." && cargo build "${flag[@]}" -p mseries-tailscale) +target_dir="$(cd "$here/.." && cargo metadata --format-version 1 --no-deps | python3 -c 'import json,sys; print(json.load(sys.stdin)["target_directory"])')" +data="${XDG_DATA_HOME:-$HOME/.local/share}" +install -Dm755 "$target_dir/$profile/mseries-tailscale" "$HOME/.local/bin/mseries-tailscale" +mkdir -p "$data/applications" +sed "s|^Exec=mseries-tailscale|Exec=$HOME/.local/bin/mseries-tailscale|" "$here/data/$id.desktop" >"$data/applications/$id.desktop" +install -Dm644 "$here/data/$id.svg" "$data/icons/hicolor/scalable/apps/$id.svg" +for icon in "$id-symbolic" mseries-tailscale-symbolic mseries-tailscale-offline-symbolic; do + install -Dm644 "$here/data/$icon.svg" "$data/icons/hicolor/symbolic/apps/$icon.svg" +done +# The old launcher opened Tailscale's web page in a browser; this app replaces it. +old="$data/applications/tailscale-control.desktop" +if [[ -f $old ]]; then + mkdir -p "$data/applications/.replaced" && mv -f "$old" "$data/applications/.replaced/" +fi +gtk-update-icon-cache -q -t -f "$data/icons/hicolor" 2>/dev/null || true +update-desktop-database -q "$data/applications" 2>/dev/null || true +echo "Installed Tailscale ($profile) to ~/.local. Open it from the applications menu." diff --git a/rust/mseries-tailscale/rustfmt.toml b/rust/mseries-tailscale/rustfmt.toml new file mode 100644 index 0000000..c775577 --- /dev/null +++ b/rust/mseries-tailscale/rustfmt.toml @@ -0,0 +1,2 @@ +max_width = 120 +use_small_heuristics = "Max" diff --git a/rust/mseries-tailscale/snapshot.sh b/rust/mseries-tailscale/snapshot.sh new file mode 100755 index 0000000..92b6134 --- /dev/null +++ b/rust/mseries-tailscale/snapshot.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# Render the Tailscale window to PNGs (light and dark) under Xvfb from the fixture status, for review and PRs. +# rust/mseries-tailscale/snapshot.sh OUT_DIR [FIXTURE_DIR] +set -euo pipefail +here=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +out=$(mkdir -p "$1" && cd "$1" && pwd) +fixtures=${2:-$here/fixtures} +(cd "$here/.." && cargo build -q -p mseries-tailscale) +bin="$(cd "$here/.." && cargo metadata --format-version 1 --no-deps | python3 -c 'import json,sys; print(json.load(sys.stdin)["target_directory"])')/debug/mseries-tailscale" +# Icons come from a private data dir so the snapshot does not depend on what is installed. +data=$(mktemp -d "${XDG_CACHE_HOME:-$HOME/.cache}/tailscale-snapshot.XXXXXX"); trap 'rm -rf "$data"' EXIT +for f in "$here"/data/*.svg; do + case $f in *-symbolic.svg) dir=symbolic ;; *) dir=scalable ;; esac + install -Dm644 "$f" "$data/icons/hicolor/$dir/apps/$(basename "$f")" +done +for scheme in light dark; do + xvfb-run -a -s "-screen 0 1000x1300x24" env GSK_RENDERER=cairo GDK_BACKEND=x11 \ + XDG_DATA_DIRS="$data:/usr/local/share:/usr/share" \ + MSERIES_TAILSCALE_FIXTURES="$fixtures" MSERIES_TAILSCALE_DARK=$([[ $scheme == dark ]] && echo 1 || echo 0) \ + MSERIES_TAILSCALE_SNAPSHOT="$out/${PREFIX:-main}-$scheme.png" MSERIES_TAILSCALE_SNAPSHOT_DELAY=${DELAY:-2500} \ + dbus-run-session -- "$bin" 2>&1 | grep -viE "egl|mesa|dri3|dbus" || true +done +ls -la "$out" diff --git a/rust/mseries-tailscale/src/cli.rs b/rust/mseries-tailscale/src/cli.rs new file mode 100644 index 0000000..0752162 --- /dev/null +++ b/rust/mseries-tailscale/src/cli.rs @@ -0,0 +1,136 @@ +//! Runs the `tailscale` command line without blocking the UI. +//! +//! `MSERIES_TAILSCALE_BIN` overrides the binary. `MSERIES_TAILSCALE_FIXTURES=DIR` reads `status.json` and +//! `prefs.json` from DIR instead, and every change then fails with "access denied", for screenshots and tests. + +use gtk::gio; +use gtk::prelude::*; + +#[derive(Debug, Clone, PartialEq)] +pub enum CliError { + /// No `tailscale` binary. + NotInstalled, + /// `tailscaled` is not running (or its socket is missing). + NotRunning, + /// Changing settings needs root or the operator setting. + AccessDenied, + Failed(String), +} + +impl CliError { + pub fn message(&self) -> String { + match self { + Self::NotInstalled => "Tailscale isn't installed.".into(), + Self::NotRunning => "The Tailscale service isn't running.".into(), + Self::AccessDenied => "Changing Tailscale settings needs a one-time setup.".into(), + Self::Failed(text) => text.clone(), + } + } +} + +/// Command that lets the current user change Tailscale settings without sudo. +pub fn operator_command() -> String { + format!("sudo tailscale set --operator={}", gtk::glib::user_name().to_string_lossy()) +} + +pub const START_SERVICE_COMMAND: &str = "sudo systemctl enable --now tailscaled"; + +fn binary() -> String { + std::env::var("MSERIES_TAILSCALE_BIN").unwrap_or_else(|_| "tailscale".into()) +} + +fn fixtures() -> Option { + std::env::var_os("MSERIES_TAILSCALE_FIXTURES").map(Into::into) +} + +/// Sorts a failed command's output into a state the window can explain. +pub fn classify(stderr: &str) -> CliError { + let lower = stderr.to_lowercase(); + if lower.contains("access denied") || lower.contains("permission denied") || lower.contains("prefs write access") { + CliError::AccessDenied + } else if lower.contains("failed to connect to local tailscaled") + || lower.contains("tailscaled.sock") + || lower.contains("is tailscaled running") + { + CliError::NotRunning + } else { + let first = stderr.lines().map(str::trim).find(|l| !l.is_empty()).unwrap_or("Tailscale didn't respond."); + CliError::Failed(first.to_string()) + } +} + +/// Runs `tailscale ARGS…` and returns its standard output. +pub async fn run(args: &[&str]) -> Result { + if let Some(dir) = fixtures() { + return match args { + ["status", "--json"] => std::fs::read_to_string(dir.join("status.json")).map_err(|_| CliError::NotRunning), + ["debug", "prefs"] => std::fs::read_to_string(dir.join("prefs.json")).map_err(|_| CliError::NotRunning), + _ => Err(CliError::AccessDenied), + }; + } + let bin = binary(); + let mut argv: Vec<&std::ffi::OsStr> = vec![bin.as_ref()]; + argv.extend(args.iter().map(|a| std::ffi::OsStr::new(*a))); + let proc = gio::Subprocess::newv(&argv, gio::SubprocessFlags::STDOUT_PIPE | gio::SubprocessFlags::STDERR_PIPE) + .map_err(|e| { + if e.matches(gio::IOErrorEnum::NotFound) || e.message().contains("No such file") { + CliError::NotInstalled + } else { + CliError::Failed(e.message().to_string()) + } + })?; + let (out, err) = proc.communicate_utf8_future(None).await.map_err(|e| CliError::Failed(e.message().to_string()))?; + let out = out.map(|s| s.to_string()).unwrap_or_default(); + let err = err.map(|s| s.to_string()).unwrap_or_default(); + if proc.is_successful() { + Ok(out) + } else if args.first() == Some(&"status") && !out.trim().is_empty() { + // `status --json` exits non-zero when stopped or logged out but still prints the state. + Ok(out) + } else { + Err(classify(&err)) + } +} + +/// Starts `tailscale login` and returns the sign-in URL it prints, without waiting for the sign-in to finish. +pub async fn login_url() -> Result { + if fixtures().is_some() { + return Err(CliError::AccessDenied); + } + let proc = gio::Subprocess::newv( + &[binary().as_ref(), std::ffi::OsStr::new("login")], + gio::SubprocessFlags::STDOUT_PIPE | gio::SubprocessFlags::STDERR_MERGE, + ) + .map_err(|e| CliError::Failed(e.message().to_string()))?; + let stream = gio::DataInputStream::new(&proc.stdout_pipe().expect("stdout pipe")); + let mut seen = String::new(); + loop { + match stream.read_line_utf8_future(gtk::glib::Priority::DEFAULT).await { + Ok(Some(line)) => { + if let Some(url) = line.split_whitespace().find(|w| w.starts_with("https://")) { + return Ok(url.to_string()); + } + seen.push_str(&line); + seen.push('\n'); + } + Ok(None) => break, + Err(e) => return Err(CliError::Failed(e.message().to_string())), + } + } + // Exited without a URL: already logged in, or an error. + if seen.trim().is_empty() { Ok(String::new()) } else { Err(classify(&seen)) } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn classifies_errors() { + let denied = "Access denied: checkprefs access denied\n\nUse 'sudo tailscale set --exit-node='."; + assert_eq!(classify(denied), CliError::AccessDenied); + let down = "failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)"; + assert_eq!(classify(down), CliError::NotRunning); + assert_eq!(classify("\nboom\nmore"), CliError::Failed("boom".into())); + } +} diff --git a/rust/mseries-tailscale/src/lib.rs b/rust/mseries-tailscale/src/lib.rs new file mode 100644 index 0000000..6b37bd7 --- /dev/null +++ b/rust/mseries-tailscale/src/lib.rs @@ -0,0 +1,7 @@ +//! Tailscale for Pantheon: status, connect, exit nodes, settings and the tailnet's devices, read from and +//! written through the `tailscale` command line (no root for reading; changes need the operator setting). + +pub mod cli; +pub mod model; +pub mod strings; +pub mod ui; diff --git a/rust/mseries-tailscale/src/main.rs b/rust/mseries-tailscale/src/main.rs new file mode 100644 index 0000000..911b4f5 --- /dev/null +++ b/rust/mseries-tailscale/src/main.rs @@ -0,0 +1,95 @@ +//! `mseries-tailscale`: the Tailscale window. +//! +//! Debug aids: `MSERIES_TAILSCALE_SNAPSHOT=/path.png` renders the window to a PNG after +//! `MSERIES_TAILSCALE_SNAPSHOT_DELAY` ms (default 2500) and quits; `MSERIES_TAILSCALE_DARK=1|0` forces the colour +//! scheme; `MSERIES_TAILSCALE_FIXTURES=DIR` reads status and prefs from DIR (see `cli.rs`). + +use gtk::{glib, prelude::*}; +use mseries_pantheon_kit::chrome; +use mseries_tailscale::strings::tr; +use mseries_tailscale::ui::window::{APP_ID, AppWindow}; +use std::cell::RefCell; +use std::rc::Rc; + +fn main() -> glib::ExitCode { + let app = gtk::Application::builder().application_id(APP_ID).build(); + let window: Rc>>> = Rc::new(RefCell::new(None)); + + app.connect_startup(|app| { + granite::init(); + if let Some(display) = gtk::gdk::Display::default() { + mseries_pantheon_kit::install_css(&display); + } + mseries_pantheon_kit::appearance::follow_color_scheme(Some("MSERIES_TAILSCALE_DARK")); + chrome::install_app_actions( + app, + chrome::About { + program_name: tr("Tailscale"), + icon: APP_ID.into(), + comments: tr("Connect to your tailnet, pick an exit node, and copy any device's IP or ssh command."), + menu_label: tr("About Tailscale"), + website: Some("https://github.com/techmore/mseries-sdk-apps".into()), + }, + ); + }); + + let slot = window.clone(); + app.connect_activate(move |app| { + if let Some(existing) = slot.borrow().as_ref() { + existing.window.present(); + return; + } + let win = AppWindow::new(app); + win.window.present(); + let s = slot.clone(); + win.window.connect_destroy(move |_| { + s.borrow_mut().take(); + }); + maybe_snapshot(app, &win.window); + *slot.borrow_mut() = Some(win); + }); + app.run() +} + +fn maybe_snapshot(app: >k::Application, window: >k::ApplicationWindow) { + let Ok(path) = std::env::var("MSERIES_TAILSCALE_SNAPSHOT") else { return }; + let delay = std::env::var("MSERIES_TAILSCALE_SNAPSHOT_DELAY").ok().and_then(|d| d.parse().ok()).unwrap_or(2500); + // MSERIES_TAILSCALE_SNAPSHOT_TOGGLE=1 flips the connect switch first (a refused change in fixture mode). + if std::env::var("MSERIES_TAILSCALE_SNAPSHOT_TOGGLE").as_deref() == Ok("1") { + let window = window.clone(); + glib::timeout_add_local_once(std::time::Duration::from_millis(delay / 3), move || { + if let Some(switch) = find_switch(window.upcast_ref()) { + switch.set_active(!switch.is_active()); + } + }); + } + let window = window.clone(); + let app = app.clone(); + glib::timeout_add_local_once(std::time::Duration::from_millis(delay), move || { + let paintable = gtk::WidgetPaintable::new(Some(&window)); + let snapshot = gtk::Snapshot::new(); + paintable.snapshot(&snapshot, window.width() as f64, window.height() as f64); + match (snapshot.to_node(), window.native().and_then(|n| n.renderer())) { + (Some(node), Some(renderer)) => match renderer.render_texture(&node, None).save_to_png(&path) { + Ok(()) => eprintln!("snapshot written to {path}"), + Err(e) => eprintln!("snapshot failed: {e}"), + }, + _ => eprintln!("nothing to render for the snapshot"), + } + app.quit(); + }); +} + +fn find_switch(widget: >k::Widget) -> Option { + if let Ok(switch) = widget.clone().downcast::() { + return Some(switch); + } + let mut child = widget.first_child(); + while let Some(c) = child { + if let Some(found) = find_switch(&c) { + return Some(found); + } + child = c.next_sibling(); + } + None +} diff --git a/rust/mseries-tailscale/src/model.rs b/rust/mseries-tailscale/src/model.rs new file mode 100644 index 0000000..3d5165c --- /dev/null +++ b/rust/mseries-tailscale/src/model.rs @@ -0,0 +1,310 @@ +//! `tailscale status --json` and `tailscale debug prefs`, reduced to what the window shows. + +use serde::Deserialize; +use std::collections::HashMap; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Backend { + Running, + Starting, + Stopped, + NeedsLogin, + NeedsMachineAuth, + Other(String), +} + +impl Backend { + fn from_str(s: &str) -> Self { + match s { + "Running" => Self::Running, + "Starting" => Self::Starting, + "Stopped" => Self::Stopped, + "NeedsLogin" | "NoState" => Self::NeedsLogin, + "NeedsMachineAuth" => Self::NeedsMachineAuth, + other => Self::Other(other.to_string()), + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Device { + pub id: String, + pub name: String, + /// First MagicDNS label, what `ssh` takes ("sdolbec-ser8"). + pub ssh_host: String, + pub ipv4: String, + pub ipv6: String, + pub os: String, + pub online: bool, + /// RFC 3339; `None` when Tailscale has no time (online devices report year 1). + pub last_seen: Option, + pub exit_node: bool, + pub exit_node_option: bool, +} + +impl Device { + /// The address people type: IPv4 when there is one. + pub fn ip(&self) -> &str { + if self.ipv4.is_empty() { &self.ipv6 } else { &self.ipv4 } + } + + pub fn ssh_command(&self) -> String { + format!("ssh {}", if self.ssh_host.is_empty() { self.ip() } else { &self.ssh_host }) + } + + pub fn os_name(&self) -> &str { + match self.os.as_str() { + "linux" => "Linux", + "windows" => "Windows", + "android" => "Android", + "" => "Unknown", + other => other, // macOS, iOS, tvOS already read well + } + } +} + +#[derive(Debug, Clone, PartialEq)] +pub struct Status { + pub backend: Backend, + pub auth_url: String, + pub tailnet: String, + pub account: String, + pub version: String, + pub this_device: Option, + /// Online first, then by name. + pub peers: Vec, + pub health: Vec, +} + +impl Status { + pub fn exit_node_options(&self) -> Vec<&Device> { + self.peers.iter().filter(|p| p.exit_node_option).collect() + } + + pub fn current_exit_node(&self) -> Option<&Device> { + self.peers.iter().find(|p| p.exit_node) + } + + pub fn online_count(&self) -> usize { + self.peers.iter().filter(|p| p.online).count() + } +} + +#[derive(Debug, Clone, Default, PartialEq)] +pub struct Prefs { + pub allow_lan_access: bool, + pub accept_dns: bool, + pub accept_routes: bool, + pub shields_up: bool, + pub run_ssh: bool, + pub operator: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +struct RawStatus { + #[serde(default)] + backend_state: String, + #[serde(default, rename = "AuthURL")] + auth_url: String, + #[serde(default)] + version: String, + #[serde(rename = "Self")] + this: Option, + #[serde(default)] + peer: Option>, + #[serde(default)] + current_tailnet: Option, + #[serde(default)] + health: Option>, + #[serde(default)] + user: Option>, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +struct RawTailnet { + #[serde(default)] + name: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +struct RawUser { + #[serde(default)] + login_name: String, +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +struct RawPeer { + #[serde(default, rename = "ID")] + id: String, + #[serde(default)] + host_name: String, + #[serde(default, rename = "DNSName")] + dns_name: String, + #[serde(default, rename = "OS")] + os: String, + #[serde(default, rename = "TailscaleIPs")] + tailscale_ips: Option>, + #[serde(default)] + online: bool, + #[serde(default)] + last_seen: String, + #[serde(default)] + exit_node: bool, + #[serde(default)] + exit_node_option: bool, + #[serde(default, rename = "UserID")] + user_id: i64, +} + +impl RawPeer { + fn into_device(self) -> Device { + let ips = self.tailscale_ips.unwrap_or_default(); + let ipv4 = ips.iter().find(|ip| !ip.contains(':')).cloned().unwrap_or_default(); + let ipv6 = ips.iter().find(|ip| ip.contains(':')).cloned().unwrap_or_default(); + let ssh_host = self.dns_name.split('.').next().unwrap_or_default().to_string(); + // Phones often call themselves "localhost"; the MagicDNS name is more useful. + let name = + if self.host_name.is_empty() || self.host_name == "localhost" { ssh_host.clone() } else { self.host_name }; + let last_seen = (!self.last_seen.is_empty() && !self.last_seen.starts_with("0001-")).then_some(self.last_seen); + Device { + id: self.id, + name, + ssh_host, + ipv4, + ipv6, + os: self.os, + online: self.online, + last_seen, + exit_node: self.exit_node, + exit_node_option: self.exit_node_option, + } + } +} + +pub fn parse_status(json: &str) -> Result { + let raw: RawStatus = serde_json::from_str(json)?; + let account = raw + .this + .as_ref() + .and_then(|me| raw.user.as_ref()?.get(&me.user_id.to_string())) + .map(|u| u.login_name.clone()) + .unwrap_or_default(); + let mut peers: Vec = + raw.peer.unwrap_or_default().into_values().map(RawPeer::into_device).filter(|d| !d.ip().is_empty()).collect(); + peers.sort_by(|a, b| b.online.cmp(&a.online).then_with(|| a.name.to_lowercase().cmp(&b.name.to_lowercase()))); + Ok(Status { + backend: Backend::from_str(&raw.backend_state), + auth_url: raw.auth_url, + tailnet: raw.current_tailnet.map(|t| t.name).unwrap_or_default(), + account, + version: raw.version.split('-').next().unwrap_or_default().to_string(), + this_device: raw.this.map(RawPeer::into_device), + peers, + health: raw.health.unwrap_or_default(), + }) +} + +#[derive(Deserialize)] +#[serde(rename_all = "PascalCase")] +struct RawPrefs { + #[serde(default)] + exit_node_allow_lan_access: bool, + #[serde(default, rename = "CorpDNS")] + corp_dns: bool, + #[serde(default)] + route_all: bool, + #[serde(default)] + shields_up: bool, + #[serde(default, rename = "RunSSH")] + run_ssh: bool, + #[serde(default)] + operator_user: Option, +} + +pub fn parse_prefs(json: &str) -> Result { + let raw: RawPrefs = serde_json::from_str(json)?; + Ok(Prefs { + allow_lan_access: raw.exit_node_allow_lan_access, + accept_dns: raw.corp_dns, + accept_routes: raw.route_all, + shields_up: raw.shields_up, + run_ssh: raw.run_ssh, + operator: raw.operator_user.unwrap_or_default(), + }) +} + +/// "Online", "Last seen 5 minutes ago", "Last seen 3 days ago"; `now` and `seen` in Unix seconds. +pub fn presence_text(online: bool, seen_unix: Option, now_unix: i64) -> String { + if online { + return "Online".into(); + } + let Some(seen) = seen_unix else { return "Offline".into() }; + let secs = (now_unix - seen).max(0); + let (n, unit) = match secs { + s if s < 60 => return "Last seen just now".into(), + s if s < 3600 => (s / 60, "minute"), + s if s < 86_400 => (s / 3600, "hour"), + s if s < 86_400 * 60 => (s / 86_400, "day"), + s if s < 86_400 * 730 => (s / (86_400 * 30), "month"), + s => (s / (86_400 * 365), "year"), + }; + format!("Last seen {n} {unit}{} ago", if n == 1 { "" } else { "s" }) +} + +#[cfg(test)] +mod tests { + use super::*; + + const STATUS: &str = include_str!("../fixtures/status.json"); + + #[test] + fn parses_status_and_orders_devices() { + let s = parse_status(STATUS).unwrap(); + assert_eq!(s.backend, Backend::Running); + assert_eq!(s.tailnet, "example@gmail.com"); + assert_eq!(s.account, "example@gmail.com"); + assert_eq!(s.version, "1.104.4"); + let me = s.this_device.as_ref().unwrap(); + assert_eq!((me.name.as_str(), me.ip()), ("eos", "100.115.140.33")); + assert!(s.peers.iter().take(s.online_count()).all(|p| p.online)); + let phone = s.peers.iter().find(|p| p.ssh_host == "iphone-14-pro").unwrap(); + assert_eq!(phone.name, "iphone-14-pro"); + assert_eq!(phone.ip(), "100.96.99.44"); + assert_eq!(phone.last_seen, None); + let ser8 = s.peers.iter().find(|p| p.name == "sdolbec-SER8").unwrap(); + assert_eq!(ser8.ssh_command(), "ssh sdolbec-ser8"); + assert_eq!(s.exit_node_options().len(), 1); + assert_eq!(s.current_exit_node().map(|d| d.name.as_str()), Some("sdolbec-SER8")); + } + + #[test] + fn parses_stopped_and_logged_out() { + let s = parse_status(r#"{"BackendState":"Stopped","Self":null,"Peer":null}"#).unwrap(); + assert_eq!(s.backend, Backend::Stopped); + assert!(s.peers.is_empty()); + let s = parse_status(r#"{"BackendState":"NeedsLogin","AuthURL":"https://login.tailscale.com/a/x"}"#).unwrap(); + assert_eq!(s.backend, Backend::NeedsLogin); + assert_eq!(s.auth_url, "https://login.tailscale.com/a/x"); + } + + #[test] + fn parses_prefs() { + let p = parse_prefs(include_str!("../fixtures/prefs.json")).unwrap(); + assert!(p.accept_dns && !p.accept_routes && !p.shields_up && !p.run_ssh); + assert_eq!(p.operator, ""); + } + + #[test] + fn presence() { + assert_eq!(presence_text(true, None, 0), "Online"); + assert_eq!(presence_text(false, None, 0), "Offline"); + assert_eq!(presence_text(false, Some(0), 30), "Last seen just now"); + assert_eq!(presence_text(false, Some(0), 3600), "Last seen 1 hour ago"); + assert_eq!(presence_text(false, Some(0), 86_400 * 3), "Last seen 3 days ago"); + assert_eq!(presence_text(false, Some(0), 86_400 * 90), "Last seen 3 months ago"); + } +} diff --git a/rust/mseries-tailscale/src/strings.rs b/rust/mseries-tailscale/src/strings.rs new file mode 100644 index 0000000..1c28a62 --- /dev/null +++ b/rust/mseries-tailscale/src/strings.rs @@ -0,0 +1,7 @@ +//! App-owned gettext domain, named after the application id. A missing catalog falls back to the source text. + +pub const DOMAIN: &str = "org.techmore.mseries.Tailscale"; + +pub fn tr(text: &str) -> String { + mseries_pantheon_kit::i18n::tr(DOMAIN, text) +} diff --git a/rust/mseries-tailscale/src/ui/mod.rs b/rust/mseries-tailscale/src/ui/mod.rs new file mode 100644 index 0000000..14bbd0b --- /dev/null +++ b/rust/mseries-tailscale/src/ui/mod.rs @@ -0,0 +1,3 @@ +//! The Tailscale window: a status card with the connect switch, exit node, the tailnet's devices and settings. + +pub mod window; diff --git a/rust/mseries-tailscale/src/ui/window.rs b/rust/mseries-tailscale/src/ui/window.rs new file mode 100644 index 0000000..8782000 --- /dev/null +++ b/rust/mseries-tailscale/src/ui/window.rs @@ -0,0 +1,843 @@ +//! Main window. One column (utility window): status card, exit node, devices, settings. +//! +//! State comes from `tailscale status --json` and `tailscale debug prefs`, every 3 s while the window is mapped +//! and right after every change. Controls never hold their own state: each refresh writes the real state back, +//! so a refused change springs back and the reason shows in a banner or toast. + +use crate::cli::{self, CliError}; +use crate::model::{self, Backend, Device, Prefs, Status}; +use crate::strings::tr; +use granite::prelude::{HeaderLabelExt, PlaceholderExt}; +use gtk::{gio, glib, prelude::*}; +use mseries_pantheon_kit::{appearance, chrome, set_accessible_label}; +use std::cell::{Cell, RefCell}; +use std::rc::Rc; +use std::time::Duration; + +pub const APP_ID: &str = "org.techmore.mseries.Tailscale"; +const ADMIN_URL: &str = "https://login.tailscale.com/admin/machines"; + +pub struct AppWindow { + pub window: gtk::ApplicationWindow, + toast: granite::Toast, + pages: gtk::Stack, + placeholder: granite::Placeholder, + placeholder_command: RefCell, + copy_button: gtk::Button, + login_button: gtk::Button, + // Status card + status_icon: gtk::Image, + status_title: gtk::Label, + status_detail: gtk::Label, + connect: gtk::Switch, + this_name: gtk::Label, + this_ip: gtk::Label, + this_row: gtk::Box, + // One-time setup banner + setup: gtk::Revealer, + health: gtk::Label, + // Exit node + exit_section: gtk::Box, + exit_choice: gtk::DropDown, + exit_ids: RefCell>, + exit_note: gtk::Label, + lan_access: gtk::Switch, + // Devices + devices_header: granite::HeaderLabel, + search: gtk::SearchEntry, + device_list: gtk::ListBox, + devices_key: RefCell, + // Settings + accept_dns: gtk::Switch, + accept_routes: gtk::Switch, + allow_incoming: gtk::Switch, + run_ssh: gtk::Switch, + version: gtk::Label, + // State + status: RefCell>, + prefs: RefCell, + updating: Cell, + busy: Cell, + poll: RefCell>, +} + +impl AppWindow { + pub fn new(app: >k::Application) -> Rc { + let window = gtk::ApplicationWindow::builder().application(app).title(tr("Tailscale")).build(); + appearance::size_window(&window, appearance::UTILITY_DEFAULT, appearance::UTILITY_MIN); + window.add_css_class("mseries-tailscale"); + install_style(&window); + + // Header: refresh and the primary menu. + let header = gtk::HeaderBar::new(); + let refresh = gtk::Button::from_icon_name("view-refresh-symbolic"); + refresh.set_action_name(Some("win.refresh")); + refresh.set_tooltip_text(Some(&tr("Refresh (Ctrl+R)"))); + set_accessible_label(&refresh, &tr("Refresh")); + header.pack_start(&refresh); + header.pack_end(&chrome::primary_menu(&tr("About Tailscale"), &tr("Quit"))); + window.set_titlebar(Some(&header)); + + // ---- Status card ------------------------------------------------------------------------------------ + let status_icon = gtk::Image::from_icon_name("mseries-tailscale-offline-symbolic"); + status_icon.set_pixel_size(48); + status_icon.set_valign(gtk::Align::Center); + let status_title = gtk::Label::builder().xalign(0.0).label(tr("Checking…")).build(); + status_title.add_css_class("title-2"); + let status_detail = gtk::Label::builder().xalign(0.0).wrap(true).build(); + status_detail.add_css_class(granite::CssClassDIM); + let titles = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(2).hexpand(true).build(); + titles.set_valign(gtk::Align::Center); + titles.append(&status_title); + titles.append(&status_detail); + let connect = gtk::Switch::builder().valign(gtk::Align::Center).build(); + set_accessible_label(&connect, &tr("Connected")); + let top = gtk::Box::builder().spacing(12).build(); + top.append(&status_icon); + top.append(&titles); + top.append(&connect); + + let this_name = gtk::Label::builder().xalign(0.0).ellipsize(gtk::pango::EllipsizeMode::End).build(); + let this_ip = gtk::Label::builder().xalign(0.0).selectable(true).build(); + this_ip.add_css_class(granite::CssClassDIM); + this_ip.add_css_class(granite::CssClassNUMERIC); + let this_text = gtk::Box::builder().orientation(gtk::Orientation::Vertical).hexpand(true).build(); + let this_caption = gtk::Label::builder().xalign(0.0).label(tr("This device")).build(); + this_caption.add_css_class(granite::CssClassSMALL); + this_caption.add_css_class(granite::CssClassDIM); + this_text.append(&this_caption); + this_text.append(&this_name); + this_text.append(&this_ip); + let this_copy = icon_button("edit-copy-symbolic", &tr("Copy IP Address")); + let this_row = gtk::Box::builder().spacing(6).build(); + this_row.append(&this_text); + this_row.append(&this_copy); + + let card = card_box(); + card.set_spacing(12); + card.append(&top); + card.append(>k::Separator::new(gtk::Orientation::Horizontal)); + card.append(&this_row); + + // One-time operator setup, shown after a change is refused. + let setup_text = gtk::Label::builder() + .xalign(0.0) + .wrap(true) + .label(tr( + "To connect, disconnect or change settings without a password prompt, run this once in Terminal:", + )) + .build(); + let setup_cmd = gtk::Label::builder() + .xalign(0.0) + .selectable(true) + .wrap(true) + .wrap_mode(gtk::pango::WrapMode::Char) + .label(cli::operator_command()) + .hexpand(true) + .build(); + setup_cmd.add_css_class(granite::CssClassMONOSPACE); + let setup_copy = gtk::Button::with_label(&tr("Copy")); + setup_copy.set_valign(gtk::Align::Center); + let setup_line = gtk::Box::builder().spacing(12).build(); + setup_line.append(&setup_cmd); + setup_line.append(&setup_copy); + let setup_box = card_box(); + setup_box.add_css_class("mseries-tailscale-setup"); + let setup_title = gtk::Label::builder().xalign(0.0).label(tr("One-time setup needed")).build(); + setup_title.add_css_class("heading"); + setup_box.append(&setup_title); + setup_box.append(&setup_text); + setup_box.append(&setup_line); + let setup = gtk::Revealer::builder().child(&setup_box).reveal_child(false).visible(false).build(); + setup.connect_child_revealed_notify(|r| r.set_visible(r.reveals_child() || r.is_child_revealed())); + + let health = gtk::Label::builder().xalign(0.0).wrap(true).visible(false).build(); + health.add_css_class(granite::CssClassWARNING); + + // ---- Exit node -------------------------------------------------------------------------------------- + let exit_header = granite::HeaderLabel::new(&tr("Exit Node")); + exit_header.set_secondary_text(Some(&tr("Send all internet traffic through another device"))); + let exit_choice = gtk::DropDown::from_strings(&[&tr("None")]); + exit_choice.set_valign(gtk::Align::Center); + set_accessible_label(&exit_choice, &tr("Exit node")); + let exit_note = gtk::Label::builder().xalign(0.0).wrap(true).visible(false).build(); + exit_note.add_css_class(granite::CssClassDIM); + let lan_access = gtk::Switch::builder().valign(gtk::Align::Center).build(); + let exit_card = card_box(); + exit_card.append(&setting_row(&tr("Use exit node"), None, &exit_choice)); + exit_card.append(&exit_note); + exit_card.append(>k::Separator::new(gtk::Orientation::Horizontal)); + exit_card.append(&setting_row( + &tr("Allow local network access"), + Some(&tr("Reach printers and other devices at home while using an exit node")), + &lan_access, + )); + let exit_section = section(&exit_header, &exit_card); + + // ---- Devices ---------------------------------------------------------------------------------------- + let devices_header = granite::HeaderLabel::new(&tr("Devices")); + let search = gtk::SearchEntry::builder().placeholder_text(tr("Search devices")).build(); + let device_list = gtk::ListBox::builder().selection_mode(gtk::SelectionMode::None).build(); + device_list.add_css_class("boxed-list"); + device_list.add_css_class(granite::CssClassCARD); + device_list.add_css_class("mseries-tailscale-devices"); + let devices_box = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(9).build(); + devices_box.append(&search); + devices_box.append(&device_list); + let devices_section = section(&devices_header, &devices_box); + + // ---- Settings --------------------------------------------------------------------------------------- + let accept_dns = gtk::Switch::builder().valign(gtk::Align::Center).build(); + let accept_routes = gtk::Switch::builder().valign(gtk::Align::Center).build(); + let allow_incoming = gtk::Switch::builder().valign(gtk::Align::Center).build(); + let run_ssh = gtk::Switch::builder().valign(gtk::Align::Center).build(); + let settings_card = card_box(); + settings_card.append(&setting_row( + &tr("Use Tailscale DNS"), + Some(&tr("Reach devices by name, like sdolbec-ser8")), + &accept_dns, + )); + settings_card.append(>k::Separator::new(gtk::Orientation::Horizontal)); + settings_card.append(&setting_row( + &tr("Use subnet routes"), + Some(&tr("Reach networks that other devices share")), + &accept_routes, + )); + settings_card.append(>k::Separator::new(gtk::Orientation::Horizontal)); + settings_card.append(&setting_row( + &tr("Allow incoming connections"), + Some(&tr("Other devices can connect to this one")), + &allow_incoming, + )); + settings_card.append(>k::Separator::new(gtk::Orientation::Horizontal)); + settings_card.append(&setting_row( + &tr("Tailscale SSH server"), + Some(&tr("Let your tailnet SSH into this device")), + &run_ssh, + )); + let settings_section = section(&granite::HeaderLabel::new(&tr("Settings")), &settings_card); + + let admin = gtk::LinkButton::with_label(ADMIN_URL, &tr("Admin Console…")); + admin.set_halign(gtk::Align::Start); + let version = gtk::Label::builder().xalign(1.0).hexpand(true).build(); + version.add_css_class(granite::CssClassDIM); + version.add_css_class(granite::CssClassSMALL); + let footer = gtk::Box::builder().spacing(12).build(); + footer.append(&admin); + footer.append(&version); + + let column = gtk::Box::builder() + .orientation(gtk::Orientation::Vertical) + .spacing(18) + .margin_top(18) + .margin_bottom(24) + .margin_start(18) + .margin_end(18) + .build(); + column.append(&card); + column.append(&setup); + column.append(&health); + column.append(&exit_section); + column.append(&devices_section); + column.append(&settings_section); + column.append(&footer); + let scroller = gtk::ScrolledWindow::builder().hscrollbar_policy(gtk::PolicyType::Never).child(&column).build(); + + // ---- Whole-window states: checking, not running, logged out ------------------------------------------ + let placeholder = granite::Placeholder::new(&tr("Checking Tailscale…")); + placeholder.set_icon(&gio::ThemedIcon::new("mseries-tailscale-offline-symbolic")); + let copy_button = placeholder.append_button( + &gio::ThemedIcon::new("edit-copy"), + &tr("Copy Command"), + &tr("Paste it in Terminal"), + ); + let login_button = placeholder.append_button( + &gio::ThemedIcon::new("system-users"), + &tr("Log In…"), + &tr("Opens the Tailscale sign-in page in your browser"), + ); + copy_button.set_visible(false); + login_button.set_visible(false); + let pages = gtk::Stack::builder().transition_type(gtk::StackTransitionType::Crossfade).build(); + pages.add_named(&placeholder, Some("placeholder")); + pages.add_named(&scroller, Some("main")); + pages.set_visible_child_name("placeholder"); + + let (overlay, toast) = chrome::toast_overlay(&pages); + window.set_child(Some(&overlay)); + + let this = Rc::new(Self { + window, + toast, + pages, + placeholder, + placeholder_command: RefCell::new(String::new()), + copy_button, + login_button, + status_icon, + status_title, + status_detail, + connect, + this_name, + this_ip, + this_row, + setup, + health, + exit_section, + exit_choice, + exit_ids: RefCell::new(Vec::new()), + exit_note, + lan_access, + devices_header, + search, + device_list, + devices_key: RefCell::new(String::new()), + accept_dns, + accept_routes, + allow_incoming, + run_ssh, + version, + status: RefCell::new(None), + prefs: RefCell::new(Prefs::default()), + updating: Cell::new(false), + busy: Cell::new(false), + poll: RefCell::new(None), + }); + + this.install_actions(); + this.connect_controls(&this_copy, &setup_copy); + + let weak = Rc::downgrade(&this); + let poll = mseries_pantheon_kit::Polling::new(Duration::from_secs(3), move || { + if let Some(this) = weak.upgrade() { + this.refresh(); + } + }); + poll.bind_to_widget_mapped(&this.window); + *this.poll.borrow_mut() = Some(poll); + this.refresh(); + this + } + + fn install_actions(self: &Rc) { + let refresh = gio::SimpleAction::new("refresh", None); + let weak = Rc::downgrade(self); + refresh.connect_activate(move |_, _| { + if let Some(this) = weak.upgrade() { + this.refresh(); + } + }); + self.window.add_action(&refresh); + let find = gio::SimpleAction::new("find", None); + let weak = Rc::downgrade(self); + find.connect_activate(move |_, _| { + if let Some(this) = weak.upgrade() { + this.search.grab_focus(); + } + }); + self.window.add_action(&find); + if let Some(app) = self.window.application() { + app.set_accels_for_action("win.refresh", &["r", "F5"]); + app.set_accels_for_action("win.find", &["f"]); + } + } + + fn connect_controls(self: &Rc, this_copy: >k::Button, setup_copy: >k::Button) { + let weak = Rc::downgrade(self); + this_copy.connect_clicked(move |_| { + let Some(this) = weak.upgrade() else { return }; + let ip = this.status.borrow().as_ref().and_then(|s| s.this_device.as_ref().map(|d| d.ip().to_string())); + if let Some(ip) = ip { + this.copy(&ip, &format!("{} {ip}", tr("Copied"))); + } + }); + let weak = Rc::downgrade(self); + setup_copy.connect_clicked(move |_| { + if let Some(this) = weak.upgrade() { + this.copy(&cli::operator_command(), &tr("Copied. Paste it in Terminal, then try again.")); + } + }); + + let weak = Rc::downgrade(self); + self.copy_button.connect_clicked(move |_| { + if let Some(this) = weak.upgrade() { + let command = this.placeholder_command.borrow().clone(); + this.copy(&command, &tr("Copied. Paste it in Terminal.")); + } + }); + let weak = Rc::downgrade(self); + self.login_button.connect_clicked(move |_| { + if let Some(this) = weak.upgrade() { + this.log_in(); + } + }); + + let weak = Rc::downgrade(self); + self.connect.connect_state_set(move |_, on| { + let Some(this) = weak.upgrade() else { return glib::Propagation::Stop }; + if this.updating.get() { + return glib::Propagation::Proceed; + } + this.change( + if on { vec!["up"] } else { vec!["down"] }, + if on { tr("Connected") } else { tr("Disconnected") }, + ); + glib::Propagation::Stop + }); + + let weak = Rc::downgrade(self); + self.exit_choice.connect_selected_notify(move |choice| { + let Some(this) = weak.upgrade() else { return }; + if this.updating.get() { + return; + } + let index = choice.selected() as usize; + let ids = this.exit_ids.borrow().clone(); + let target = if index == 0 { String::new() } else { ids.get(index - 1).cloned().unwrap_or_default() }; + let done = if target.is_empty() { tr("Exit node turned off") } else { tr("Using exit node") }; + this.change(vec!["set", &format!("--exit-node={target}")], done); + }); + + self.bind_switch(&self.lan_access, "--exit-node-allow-lan-access", false); + self.bind_switch(&self.accept_dns, "--accept-dns", false); + self.bind_switch(&self.accept_routes, "--accept-routes", false); + self.bind_switch(&self.allow_incoming, "--shields-up", true); + self.bind_switch(&self.run_ssh, "--ssh", false); + + let weak = Rc::downgrade(self); + self.search.connect_search_changed(move |_| { + if let Some(this) = weak.upgrade() { + this.devices_key.borrow_mut().clear(); + this.show_devices(); + } + }); + } + + /// `tailscale set FLAG=BOOL` from a switch; `inverted` for flags whose meaning is the switch's opposite. + fn bind_switch(self: &Rc, switch: >k::Switch, flag: &'static str, inverted: bool) { + let weak = Rc::downgrade(self); + switch.connect_state_set(move |_, on| { + let Some(this) = weak.upgrade() else { return glib::Propagation::Stop }; + if this.updating.get() { + return glib::Propagation::Proceed; + } + let value = on != inverted; + this.change(vec!["set", &format!("{flag}={value}")], tr("Setting saved")); + glib::Propagation::Stop + }); + } + + /// Runs a changing command, then refreshes so every control shows the real state. + fn change(self: &Rc, args: Vec<&str>, done: String) { + if self.busy.replace(true) { + return; + } + let args: Vec = args.into_iter().map(String::from).collect(); + let this = self.clone(); + glib::spawn_future_local(async move { + let argv: Vec<&str> = args.iter().map(String::as_str).collect(); + let result = cli::run(&argv).await; + this.busy.set(false); + match result { + Ok(_) => { + this.setup.set_reveal_child(false); + chrome::show_toast(&this.toast, &done); + } + Err(CliError::AccessDenied) => { + this.setup.set_visible(true); + this.setup.set_reveal_child(true); + chrome::show_toast(&this.toast, &CliError::AccessDenied.message()); + } + Err(e) => chrome::show_toast(&this.toast, &e.message()), + } + this.refresh_now().await; + }); + } + + pub fn refresh(self: &Rc) { + if self.busy.get() { + return; + } + let this = self.clone(); + glib::spawn_future_local(async move { this.refresh_now().await }); + } + + async fn refresh_now(self: &Rc) { + let status = cli::run(&["status", "--json"]).await; + let prefs = cli::run(&["debug", "prefs"]).await.ok().and_then(|p| model::parse_prefs(&p).ok()); + match status.map(|json| model::parse_status(&json)) { + Ok(Ok(status)) => { + if let Some(prefs) = prefs { + *self.prefs.borrow_mut() = prefs; + } + self.apply(status); + } + Ok(Err(_)) => { + self.show_problem(&tr("Couldn't read Tailscale's status"), &tr("Try again in a moment."), None) + } + Err(CliError::NotInstalled) => self.show_problem( + &tr("Tailscale isn't installed"), + &tr("Install Tailscale, then open this window again."), + None, + ), + Err(_) => self.show_problem( + &tr("Tailscale isn't running"), + &tr("Start the Tailscale service, then this window connects by itself:"), + Some(cli::START_SERVICE_COMMAND), + ), + } + } + + fn show_problem(self: &Rc, title: &str, description: &str, command: Option<&str>) { + self.placeholder.set_title(title); + let text = match command { + Some(c) => format!("{description}\n\n{c}"), + None => description.to_string(), + }; + self.placeholder.set_description(&text); + self.placeholder.set_icon(&gio::ThemedIcon::new("mseries-tailscale-offline-symbolic")); + self.set_placeholder_button(command.map(|c| PlaceholderAction::Copy(c.to_string()))); + self.pages.set_visible_child_name("placeholder"); + } + + fn set_placeholder_button(&self, action: Option) { + self.copy_button.set_visible(matches!(action, Some(PlaceholderAction::Copy(_)))); + self.login_button.set_visible(matches!(action, Some(PlaceholderAction::LogIn))); + if let Some(PlaceholderAction::Copy(command)) = action { + *self.placeholder_command.borrow_mut() = command; + } + } + + fn log_in(self: &Rc) { + let auth = self.status.borrow().as_ref().map(|s| s.auth_url.clone()).unwrap_or_default(); + if !auth.is_empty() { + self.open(&auth); + return; + } + let this = self.clone(); + glib::spawn_future_local(async move { + match cli::login_url().await { + Ok(url) if !url.is_empty() => this.open(&url), + Ok(_) => this.refresh_now().await, + Err(CliError::AccessDenied) => { + this.copy( + &cli::operator_command(), + &tr("Copied the one-time setup command. Run it, then try again."), + ); + } + Err(e) => chrome::show_toast(&this.toast, &e.message()), + } + }); + } + + fn apply(self: &Rc, status: Status) { + match status.backend { + Backend::NeedsLogin | Backend::NeedsMachineAuth => { + let (title, text) = if status.backend == Backend::NeedsLogin { + (tr("Log in to Tailscale"), tr("Sign in with your Tailscale account to join your tailnet.")) + } else { + (tr("Waiting for approval"), tr("An admin of your tailnet needs to approve this device.")) + }; + self.placeholder.set_title(&title); + self.placeholder.set_description(&text); + self.placeholder.set_icon(&gio::ThemedIcon::new("mseries-tailscale-offline-symbolic")); + self.set_placeholder_button( + (status.backend == Backend::NeedsLogin).then_some(PlaceholderAction::LogIn), + ); + *self.status.borrow_mut() = Some(status); + self.pages.set_visible_child_name("placeholder"); + return; + } + _ => {} + } + self.pages.set_visible_child_name("main"); + self.updating.set(true); + let connected = status.backend == Backend::Running; + self.status_icon.set_icon_name(Some(if connected { + "mseries-tailscale-symbolic" + } else { + "mseries-tailscale-offline-symbolic" + })); + self.status_title.set_label(&match status.backend { + Backend::Running => tr("Connected"), + Backend::Starting => tr("Connecting…"), + _ => tr("Disconnected"), + }); + let mut detail = Vec::new(); + if !status.tailnet.is_empty() { + detail.push(status.tailnet.clone()); + } + if !status.account.is_empty() && status.account != status.tailnet { + detail.push(status.account.clone()); + } + if !connected { + detail.insert(0, tr("Turn on to reach your devices")); + } + self.status_detail.set_label(&detail.join(" · ")); + self.connect.set_active(connected || status.backend == Backend::Starting); + self.connect.set_state(connected); + + if let Some(me) = &status.this_device { + self.this_name.set_label(&me.name); + let mut ip = me.ip().to_string(); + if !me.ssh_host.is_empty() && !me.ssh_host.eq_ignore_ascii_case(&me.name) { + ip = format!("{ip} · {}", me.ssh_host); + } + self.this_ip.set_label(&ip); + } + self.this_row.set_visible(status.this_device.is_some()); + + self.health.set_visible(!status.health.is_empty()); + self.health.set_label(&status.health.join("\n")); + + // Exit node + let options = status.exit_node_options(); + let mut labels = vec![tr("None")]; + let mut ids = Vec::new(); + for d in &options { + labels.push(if d.online { d.name.clone() } else { format!("{} ({})", d.name, tr("offline")) }); + ids.push(d.ip().to_string()); + } + let current = status.current_exit_node().map(|d| d.ip().to_string()); + let selected = current.as_ref().and_then(|ip| ids.iter().position(|i| i == ip)).map(|i| i + 1).unwrap_or(0); + if *self.exit_ids.borrow() != ids { + let refs: Vec<&str> = labels.iter().map(String::as_str).collect(); + self.exit_choice.set_model(Some(>k::StringList::new(&refs))); + *self.exit_ids.borrow_mut() = ids; + } + self.exit_choice.set_selected(selected as u32); + self.exit_choice.set_sensitive(connected && !options.is_empty()); + self.exit_note.set_visible(options.is_empty()); + self.exit_note.set_label(&tr( + "No device on your tailnet offers itself as an exit node yet. Turn it on in that device's Tailscale settings.", + )); + let prefs = self.prefs.borrow().clone(); + self.lan_access.set_active(prefs.allow_lan_access); + self.lan_access.set_state(prefs.allow_lan_access); + self.exit_section.set_visible(true); + + self.accept_dns.set_active(prefs.accept_dns); + self.accept_dns.set_state(prefs.accept_dns); + self.accept_routes.set_active(prefs.accept_routes); + self.accept_routes.set_state(prefs.accept_routes); + self.allow_incoming.set_active(!prefs.shields_up); + self.allow_incoming.set_state(!prefs.shields_up); + self.run_ssh.set_active(prefs.run_ssh); + self.run_ssh.set_state(prefs.run_ssh); + self.version.set_label(&if status.version.is_empty() { + String::new() + } else { + format!("Tailscale {}", status.version) + }); + self.updating.set(false); + + self.devices_header.set_secondary_text(Some(&format!( + "{} {} · {} {}", + status.online_count(), + tr("online"), + status.peers.len(), + tr("total") + ))); + *self.status.borrow_mut() = Some(status); + self.show_devices(); + } + + fn show_devices(self: &Rc) { + let status = self.status.borrow(); + let Some(status) = status.as_ref() else { return }; + let query = self.search.text().to_lowercase(); + let now = glib::DateTime::now_utc().map(|t| t.to_unix()).unwrap_or(0); + let shown: Vec<&Device> = status + .peers + .iter() + .filter(|d| { + query.is_empty() + || d.name.to_lowercase().contains(&query) + || d.ip().contains(&query) + || d.os_name().to_lowercase().contains(&query) + }) + .collect(); + // Rebuild only when something visible changed, so hover and focus survive the 3 s refresh. + let connected = status.backend == Backend::Running; + let key = format!( + "{connected}|{}", + shown + .iter() + .map(|d| format!( + "{}:{}:{}:{:?}:{}", + d.id, + d.online, + d.name, + d.last_seen.as_ref().map(|_| now / 60), + d.exit_node + )) + .collect::>() + .join(",") + ); + if *self.devices_key.borrow() == key { + return; + } + *self.devices_key.borrow_mut() = key; + while let Some(row) = self.device_list.first_child() { + self.device_list.remove(&row); + } + if shown.is_empty() { + let empty = gtk::Label::builder() + .label(if query.is_empty() { tr("No other devices yet") } else { tr("No matching devices") }) + .margin_top(18) + .margin_bottom(18) + .build(); + empty.add_css_class(granite::CssClassDIM); + let row = gtk::ListBoxRow::builder().child(&empty).activatable(false).build(); + self.device_list.append(&row); + return; + } + for device in shown { + self.device_list.append(&self.device_row(device, now, connected)); + } + } + + fn device_row(self: &Rc, device: &Device, now: i64, connected: bool) -> gtk::ListBoxRow { + let dot = gtk::Label::new(Some("●")); + dot.add_css_class(if device.online { granite::CssClassSUCCESS } else { granite::CssClassDIM }); + dot.set_tooltip_text(Some(&if device.online { tr("Online") } else { tr("Offline") })); + dot.set_valign(gtk::Align::Center); + dot.add_css_class("mseries-tailscale-dot"); + + let name = + gtk::Label::builder().label(&device.name).xalign(0.0).ellipsize(gtk::pango::EllipsizeMode::End).build(); + name.add_css_class("heading"); + let seen = + device.last_seen.as_deref().and_then(|s| glib::DateTime::from_iso8601(s, None).ok()).map(|t| t.to_unix()); + let detail = gtk::Label::builder() + .label(format!( + "{} · {} · {}", + device.ip(), + device.os_name(), + tr(&model::presence_text(device.online, seen, now)) + )) + .xalign(0.0) + .ellipsize(gtk::pango::EllipsizeMode::End) + .build(); + detail.add_css_class(granite::CssClassDIM); + detail.add_css_class(granite::CssClassSMALL); + let text = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(2).hexpand(true).build(); + let title_line = gtk::Box::builder().spacing(6).build(); + title_line.append(&name); + if device.exit_node { + let badge = gtk::Label::new(Some(&tr("Exit node"))); + badge.add_css_class("mseries-tailscale-badge"); + badge.set_valign(gtk::Align::Center); + title_line.append(&badge); + } + text.append(&title_line); + text.append(&detail); + + let copy_ip = icon_button("edit-copy-symbolic", &format!("{} {}", tr("Copy IP Address"), device.ip())); + let ssh = device.ssh_command(); + let copy_ssh = icon_button("utilities-terminal-symbolic", &format!("{} “{ssh}”", tr("Copy"))); + let (ip, ip_done) = (device.ip().to_string(), format!("{} {}", tr("Copied"), device.ip())); + let weak = Rc::downgrade(self); + copy_ip.connect_clicked(move |_| { + if let Some(this) = weak.upgrade() { + this.copy(&ip, &ip_done); + } + }); + let ssh_done = format!("{} “{ssh}”", tr("Copied")); + let weak = Rc::downgrade(self); + copy_ssh.connect_clicked(move |_| { + if let Some(this) = weak.upgrade() { + this.copy(&ssh, &ssh_done); + } + }); + + let line = + gtk::Box::builder().spacing(12).margin_top(9).margin_bottom(9).margin_start(12).margin_end(6).build(); + line.append(&dot); + line.append(&text); + line.append(©_ip); + line.append(©_ssh); + if !device.online || !connected { + name.add_css_class(granite::CssClassDIM); + } + + // Clicking the row copies the IP; the context menu has both. + let row = gtk::ListBoxRow::builder().child(&line).activatable(true).build(); + row.set_tooltip_text(Some(&format!("{} {}", tr("Click to copy"), device.ip()))); + let (ip, ip_done) = (device.ip().to_string(), format!("{} {}", tr("Copied"), device.ip())); + let weak = Rc::downgrade(self); + row.connect_activate(move |_| { + if let Some(this) = weak.upgrade() { + this.copy(&ip, &ip_done); + } + }); + row + } + + fn copy(&self, text: &str, confirmation: &str) { + self.window.clipboard().set_text(text); + chrome::show_toast(&self.toast, confirmation); + } + + fn open(&self, uri: &str) { + gtk::UriLauncher::new(uri).launch(Some(&self.window), gio::Cancellable::NONE, |_| {}); + } +} + +enum PlaceholderAction { + Copy(String), + LogIn, +} + +fn install_style(window: >k::ApplicationWindow) { + let provider = gtk::CssProvider::new(); + provider.load_from_string(include_str!("../../data/style.css")); + gtk::style_context_add_provider_for_display( + >k::prelude::WidgetExt::display(window), + &provider, + gtk::STYLE_PROVIDER_PRIORITY_APPLICATION, + ); +} + +fn card_box() -> gtk::Box { + let b = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(9).build(); + b.add_css_class(granite::CssClassCARD); + b.add_css_class("mseries-tailscale-card"); + b +} + +fn section(header: &impl IsA, body: &impl IsA) -> gtk::Box { + let b = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(6).build(); + b.append(header); + b.append(body); + b +} + +fn setting_row(title: &str, description: Option<&str>, control: &impl IsA) -> gtk::Box { + let label = gtk::Label::builder().label(title).xalign(0.0).wrap(true).build(); + let text = gtk::Box::builder().orientation(gtk::Orientation::Vertical).spacing(2).hexpand(true).build(); + text.set_valign(gtk::Align::Center); + text.append(&label); + if let Some(d) = description { + let sub = gtk::Label::builder().label(d).xalign(0.0).wrap(true).build(); + sub.add_css_class(granite::CssClassDIM); + sub.add_css_class(granite::CssClassSMALL); + text.append(&sub); + } + let row = gtk::Box::builder().spacing(12).build(); + row.append(&text); + row.append(control); + if let Some(sw) = control.dynamic_cast_ref::() { + set_accessible_label(sw, title); + } + row +} + +fn icon_button(icon: &str, label: &str) -> gtk::Button { + let b = gtk::Button::from_icon_name(icon); + b.add_css_class("flat"); + b.set_valign(gtk::Align::Center); + b.set_tooltip_text(Some(label)); + set_accessible_label(&b, label); + b +}