dms_tailscalectl/README.md
vybe 4b9d6ce6d8 chore(polish): manifest, docs, tests, and nits for dms-plugin-dev alignment
- plugin.json: added capabilities + requires; bumped to 0.2.0
- README: corrected "auto-refresh" claim (now documents the intentional on-demand + defensive poll-act-poll); added Implementation notes section covering Proc + I18n + best practices
- test/lib.test.js: updated the manual verification comment (now references Proc + preserved behavior)
- Minor version references in README example + caption
- All changes keep exact toggle semantics and follow repo style

Written by AI agent working for @jtmorris. Model: grok-build-0.1.
2026-05-25 03:00:33 +00:00

3 KiB
Raw Permalink Blame History

Tailscale Widget Plugin for Dank Material Shell

A lightweight widget plugin that shows Tailscale connectivity status on the Dank Bar with quick controls for toggling connection, switching exit nodes, and copying peer addresses.

Tailscale Widget v0.2.0

Features

  • Status icon in the bar — vpn_key when connected, vpn_key_off when disconnected
  • Right-click to toggle Tailscale on/off
  • Left-click to open a popout showing:
    • Your current Tailscale IP
    • Active exit node (with clear button)
    • Peer list with hostnames and IPs
  • Click-to-copy any hostname or IP to clipboard
  • Exit node selection — click on any exit-node-capable peer to route through it
  • On-demand status — polls Tailscale for ground truth on load, explicit actions, and post-mutation verification (defensive poll-act-poll for toggles; no always-on timer)
  • Toast notifications for all errors

Requirements

  • Dank Material Shell installed and running
  • tailscale CLI available on PATH
  • A clipboard tool (dms or wl-copy)

Installation

  1. Clone or copy this repository so that the tailscalectl/ directory is available:

    git clone <repo-url>
    
  2. Place the tailscalectl/ directory into your DMS plugins directory:

    mv tailscalectl ~/.config/dankmaterialshell/plugins/
    

    The directory must contain:

    tailscalectl/
    ├── plugin.json
    ├── TailscaleWidget.qml
    └── lib.js
    
  3. Reload the plugin:

    dms ipc call plugins reload tailscalectl
    
  4. The Tailscale icon should appear on your Dank Bar. If connected, it shows a filled key icon; if disconnected, an outlined key icon.

Usage

Action How
Toggle connection Right-click the bar icon
Open popout Left-click the bar icon
Copy hostname/IP Click the text in the peer list
Set exit node Click next to an exit-node peer
Clear exit node Click × next to "Exit node: ..." or click on current node

Plugin Manifest

{
  "id": "tailscalectl",
  "name": "Tailscale",
  "description": "Tailscale status and controls on the Dank Bar",
  "version": "0.2.0",
  "author": "John Morris & Vybe (AI Slop... er... Coding Assistant)",
  "icon": "vpn_key",
  "type": "widget",
  "component": "./TailscaleWidget.qml",
  "permissions": ["settings_read", "settings_write", "process"]
}

Implementation notes

  • Uses Proc singleton (from qs.Common) for all external tailscale commands (one-shot stdout capture + auto cleanup).
  • Fully I18n-ready via I18n.tr(...) (source keys in American English only today; see tailscalectl/i18n/ for scaffolding).
  • Follows current dms-plugin-dev + DMS 1.4 plugin best practices (capabilities, requires, no raw Process for one-shots, etc.).
  • Toggle uses intentional defensive poll-act-poll (see code comments).

Testing

node --test test/lib.test.js

License

See LICENSE.