59 lines
1.5 KiB
Bash
Executable file
59 lines
1.5 KiB
Bash
Executable file
#!/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
|