dms_tailscalectl/README.md
vybe 06925ed3fc feat: extract UI strings to lib.js; harden clipboard to direct argv, drop clipmanctl (#34, #49)
- safeClipboardTools now only dms + wl-copy (clipmanctl removed as niche optional history manager)
- buildCopyCommand now returns pure argv arrays (no sh -c, no escaping, eliminates future injection risk)
- Added getStrings() for centralised user-facing strings (prep for real i18n)
- Updated all tests (TDD) and README
- All 29 tests pass

Written by AI agent working for @jtmorris. Model: Grok build-0.1.
2026-05-22 06:42:11 +00:00

2.4 KiB
Raw 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.1.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
  • Auto-refresh — status polls every 5 seconds
  • 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.1.0",
  "author": "John Morris & Vybe (AI Slop... er... Coding Assistant)",
  "icon": "vpn_key",
  "type": "widget",
  "component": "./TailscaleWidget.qml",
  "permissions": ["settings_read", "settings_write", "process"]
}

Testing

node --test test/lib.test.js

License

See LICENSE.