#!/usr/bin/env bash STATUS_KEY="state" RUNNING="connected" mullvad_status () { status="$(mullvad status --json | jq -r '.'$STATUS_KEY)" if [ "$status" = $RUNNING ]; then return 0 fi return 1 } toggle_status () { if mullvad_status; then mullvad disconnect else mullvad connect fi } case $1 in --status) if mullvad_status; then status_json=$(mullvad status --json) endpoint=$(echo "$status_json" | jq -r '.details.endpoint | "\(.tunnel_interface) (\(.tunnel_type))"') location=$(echo "$status_json" | jq -r '.details.location | "\(.country), \(.city) (\(.ipv4))"') echo "{\"text\":\"\",\"class\":\"connected\",\"alt\":\"connected\", \"tooltip\": \"${endpoint}\\n${location}\"}" else echo "{\"text\":\"\",\"class\":\"disconnected\",\"alt\":\"disconnected\", \"tooltip\": \"VPN is not active.\"}" fi ;; --toggle) toggle_status ;; esac