From fd322ade4d50ff0eab695648d69edc5cb2abd1b2 Mon Sep 17 00:00:00 2001 From: ryukamish Date: Mon, 8 Jun 2026 12:25:29 +0530 Subject: add: vpn module for waybar --- .config/waybar/config.jsonc | 12 ++++++------ .local/bin/waybar-vpn | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100755 .local/bin/waybar-vpn diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc index dab8552..b10f9f9 100644 --- a/.config/waybar/config.jsonc +++ b/.config/waybar/config.jsonc @@ -84,12 +84,12 @@ "on-click": "kitty --app-id TUI.float -e wifitui", "on-click-right": "rfkill toggle wlan" }, - "custom/vpn": { - "format": "VPN", - "exec": "echo '{\"class\": \"connected\"}'", - "exec-if": "test -d /proc/sys/net/ipv4/conf/proton0", + "format": "VPN: {}", + "exec": "~/.local/bin/waybar-vpn status", + // "exec": "echo '{\"class\": \"connected\"}'", + // "exec-if": "test -d /proc/sys/net/ipv4/conf/proton0", "return-type": "json", - "interval": 5 - }, + "interval": 30 + } } diff --git a/.local/bin/waybar-vpn b/.local/bin/waybar-vpn new file mode 100755 index 0000000..008e743 --- /dev/null +++ b/.local/bin/waybar-vpn @@ -0,0 +1,31 @@ +#!/bin/sh + +# first user argument +cmd="$1" + +case "$cmd" in + connect) + # TODO: handle root permission password input + if [ -n $(type "nmcli") ]; then + nmcli connection show --active \ + rg -i 'wireguard' + fi + ;; + disconnect) + # `wg-quick` requires root permission to disconnect + # don't have the solution right now + ;; + status) + vpn=$(nmcli connection show --active | rg -i 'wireguard' | awk '{print $1}') + if [ -n "$vpn" ]; then + printf "{\"text\": \"$vpn\", \"class\": \"wireguard\", \"alt\": \"disconnected\" }\n" + else + printf "{\"text\": \"DC'D\", \"class\": \"wireguard\", \"alt\": \"disconnected\" }\n" + fi + ;; + *) + # print usage if not used with any of the below three commands + echo -e "Usage: %s {status|connect|disconnect}\n" + exit 1 + ;; +esac -- cgit v1.3