Pangolin Widget
May 2, 2026 · View on GitHub
DankMaterialShell (Quickshell) plugin for Pangolin VPN client.
Bar pill, control center quick tile, popout with peers/routes/connection details, polling with optional live RTT, notifications.
Screenshots
Bar pill

Popout

Control center tile

Control center detail

Settings

Dependencies
Required:
quickshell— shell runtimeDankMaterialShell— host shell + themepangolin— CLI in$PATHsudo— forpangolin up/down
Optional:
- Any terminal emulator (
kitty,alacritty,foot,wezterm,gnome-terminal,konsole,xterm) forpangolin loginflow - NOPASSWD sudo rule via included
install-sudoers.sh(skips askpass prompt — recommended) - Askpass GUI helper if NOPASSWD not used: one of
zenity,kdialog,ksshaskpass,rofi, or any systemssh-askpass
Install
./sync.sh
Copies plugin into your DMS plugins dir.
Optional: passwordless sudo
Avoids askpass prompt on connect/disconnect:
# from settings UI -> "Install sudoers"
# or manual:
sudo sh ./install-sudoers.sh
Uninstall:
sudo sh ./uninstall-sudoers.sh
Settings
Stored in ~/.config/DankMaterialShell/plugin_settings.json under this plugin id.
| Key | Default | Description |
|---|---|---|
barMode | icon_state | Bar pill display mode |
popoutPollSec | 3 | Poll rate while popout open or live RTT on |
backgroundPollSec | 30 | Poll rate when popout closed |
liveRTT | false | Always poll at active rate (more CPU) |
terminalCommand | "" | Override terminal launch for pangolin login |
muteAll | false | Disable all notifications |
notifyOnConnect / notifyOnDisconnect / notifyOnError / notifyOnUserActions | mixed | Granular notification toggles |
Files
Widget.qml— plugin entry, bar/cc/popout wiringSettings.qml— settings panelservices/PangolinService.qml— CLI wrapper, polling, state machineservices/PangolinNotifier.qml— notification dispatchcomponents/— UI parts (pills, tile, popout body, peer row, etc.)askpass.sh,install-sudoers.sh,uninstall-sudoers.sh— sudo helperssync.sh— install script
License
MIT — see LICENSE.