1
Files
flake-nixinator/config/rofi/menus/vpn.fish

38 lines
1.3 KiB
Fish
Executable File

#!/usr/bin/env fish
# User chooses VPN server, running servers are marked in green
set SERVERS (cat ~/NixFlake/config/rofi/menus/servers.txt) # TODO: This file should probably be generated by nix?
set PROMPT ""
for SERVER in $SERVERS
set SERVER_RUNNING "$(systemctl list-units wg0-$SERVER.service | grep wg0-$SERVER.service)"
if test -z $SERVER_RUNNING
set PROMPT $PROMPT$SERVER"\n"
else
set PROMPT $PROMPT"<span foreground=\"green\">$SERVER</span>\n"
end
end
set SERVER (echo -e $PROMPT | rofi -theme ~/NixFlake/config/rofi/rofi.rasi -dmenu -p "vpn" -i -markup-rows)
set SERVER (echo -e $SERVER | sd "<.*?>" "")
if not contains $SERVER $SERVERS
exit
end
# User chooses action
set ACTIONS "start" "stop" "status"
set ACTION (echo -e (string join "\n" $ACTIONS) | rofi -theme ~/NixFlake/config/rofi/rofi.rasi -dmenu -p "action" -i)
if not contains $ACTION $ACTIONS
exit
end
# Enable wireguard netdev
set COMMAND "systemctl $ACTION wg0-$SERVER.service"
set EVAL_RESULT "$(eval $COMMAND)"
if test $ACTION = "status" && test -n "$EVAL_RESULT"
# Display result if it exists
rofi -theme ~/NixFlake/config/rofi/rofi.rasi -e "$EVAL_RESULT"
else if test $ACTION = "start"
# Launch chromium in firejail
firejail --noprofile --private --netns="wg0-$SERVER" chromium --incognito --new-window ipaddress.my &>/dev/null
end