Awesome
Polybar Module and Rofi dmenu for tailscale
- display tailscale VPN connection status in polybar
- enable/disable tailscale from rofi
- automatically shows one option per available exit node
Setup
Polybar Module
- Put
info-tailscale.sh
somewhere on your system, for example to~/.config/polybar/info-tailscale.sh
. - In your polybar config, add:
Also add[module/info-tailscale] type = custom/script exec = ~/.config/polybar/info-tailscale.sh interval = 10
info-tailscale
tomodules-left
,modules-center
, ormodules-right
.
(The demo GIF uses interval = 3
for added effect.)
Rofi Switcher
- Put
choose_vpn_config.sh
somewhere on your system, for example~/.config/scripts/choose_vpn_config.sh
. - Add a keybinding in your window manager that triggers the script. Example config snippet for i3wm:
bindsym $mod+Shift+v exec --no-startup-id $HOME/.config/scripts/choose_vpn_config.sh
- Run
sudo tailscale up --operator $(whoami)
once. This gives your username permission totailscale up
without sudo in the future (i.e. when using the rofi switcher).
Alternative with polkit
Support for the --operator
option wasn't unanimous when it was introduced.
In case it is removed again in the future, polkit can be used as an alternative for rights elevation:
- Install polkit and a polkit authentication agent.
- for example
sudo apt install lxpolkit
on Debian-based OS
- for example
- Run the agent on session startup.
- for example
exec --no-startup-id lxpolkit
when using i3wm
- for example
- Remove the
--operator
options in choose_vpn_config.sh, and usepkexec
for thetailscale
invocation.
Font (optional)
For the door icons, I use fontawesome.
Alternatives and Credits
- tailscale widget for my desktop bar - tiling window manager: https://forum.tailscale.com/t/widget-for-my-desktop-bar-tiling-window-manager/623
- Thanks to sidepodmatt and within for the efficient and succinct way of obtaining the tailscale status with curl (instead of calling
tailscale status
).
- Thanks to sidepodmatt and within for the efficient and succinct way of obtaining the tailscale status with curl (instead of calling
- Linux port of tailscale system tray menu: https://github.com/mattn/tailscale-systray/
Related Projects (not for tailscale)
- Rofi-based interface to enable VPN connections with NetworkManager: https://gitlab.com/DamienCassou/rofi-vpn
- Custom rofi menu that allows for activating and deactivating VPN connections: https://github.com/marcje/rofi-vpn
- Polybar module for Mullvad VPN control: https://github.com/shervinsahba/polybar-vpn-controller