Add polybar module for showing wireguard status

This commit is contained in:
Yash Karandikar 2022-06-16 00:21:33 +05:30
parent ded39cc1b7
commit 364cc7edcd
3 changed files with 66 additions and 2 deletions

View file

@ -43,7 +43,7 @@ wm-restack = bspwm
# clipmenu-widget: showing clipmenu service
# Top modules
bottom-left = powermenu title bluetooth cpu memory backlight
bottom-left = powermenu title bluetooth wireguard cpu memory backlight
bottom-center = i3
bottom-right = spotify alsa network-detail battery date

View file

@ -97,7 +97,7 @@ label-focused-padding = 2
label-focused-foreground = ${colors.nord7}
label-focused-underline = ${colors.nord7}
label-unfocused =
label-unfocused =
label-urgent = %name%
label-urgent-foreground = ${colors.urgent}
@ -362,3 +362,9 @@ exec = ~/.config/polybar/bluetooth.sh
interval = 2
format-underline = #81a1c1
click-left = exec alacritty -e bluetoothctl
[module/wireguard]
type = custom/script
exec = ~/.config/polybar/polybar-wireguard
tail = false
interval = 2

View file

@ -0,0 +1,58 @@
#!/usr/bin/env sh
# Unfortunately it's not easy to directly use Polybar colour values in this
# script so I have to redefine some of my colours here. See the link below for
# more details:
# https://github.com/polybar/polybar/wiki/Formatting#format-tags-inside-polybar-config
color=#bf616a
configs_path="/PATH/TO/CONF/FILES"
connected_interface=$(networkctl | grep -P "\d+ .* wireguard routable" -o | cut -d" " -f2)
connect() {
selected_config=$(ls $configs_path/*.conf | xargs basename -a -s .conf | dmenu)
[[ $selected_config ]] && sudo wg-quick up "$configs_path"/"$selected_config".conf
}
disconnect() {
# Normally we should have a single connected interface but technically
# there's nothing stopping us from having multiple active intgerfaces so
# let's do this in a loop:
for connected_config in $(networkctl | grep -P "\d+ .* wireguard routable" -o | cut -d" " -f2)
do
sudo wg-quick down $configs_path/"$connected_config".conf
done
}
toggle() {
if [[ $connected_interface ]]
then
disconnect
else
connect
fi
}
print() {
if [[ $connected_interface ]]
then
echo %{u"$color"}%{+u}%{T4}%{F"$color"}%{T-}%{F-} "$connected_interface"
else
echo %{u"$color"}%{+u}%{T4}%{F"$color"}%{T-}%{F-}
fi
}
case "$1" in
--connect)
connect
;;
--disconnect)
disconnect
;;
--toggle)
toggle
;;
*)
print
;;
esac