2026-05-18 21:17:54 +00:00
# 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.
2026-05-19 00:20:09 +00:00

2026-05-18 21:17:54 +00:00
## 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`
2026-05-22 06:33:08 +00:00
- A clipboard tool (`dms` or `wl-copy` )
2026-05-18 21:17:54 +00:00
## 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
```json
{
"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
```bash
node --test test/lib.test.js
```
## License
See [LICENSE ](LICENSE ).