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

bar pill

Popout

popout

Control center tile

cc tile

Control center detail

cc detail

Settings

settings

Dependencies

Required:

Optional:

  • Any terminal emulator (kitty, alacritty, foot, wezterm, gnome-terminal, konsole, xterm) for pangolin login flow
  • 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 system ssh-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.

KeyDefaultDescription
barModeicon_stateBar pill display mode
popoutPollSec3Poll rate while popout open or live RTT on
backgroundPollSec30Poll rate when popout closed
liveRTTfalseAlways poll at active rate (more CPU)
terminalCommand""Override terminal launch for pangolin login
muteAllfalseDisable all notifications
notifyOnConnect / notifyOnDisconnect / notifyOnError / notifyOnUserActionsmixedGranular notification toggles

Files

  • Widget.qml — plugin entry, bar/cc/popout wiring
  • Settings.qml — settings panel
  • services/PangolinService.qml — CLI wrapper, polling, state machine
  • services/PangolinNotifier.qml — notification dispatch
  • components/ — UI parts (pills, tile, popout body, peer row, etc.)
  • askpass.sh, install-sudoers.sh, uninstall-sudoers.sh — sudo helpers
  • sync.sh — install script

License

MIT — see LICENSE.