Description
: Generic description of this script.Requirements
: Requirements / dependencies.Installation
: How to install this script.Usage
: How to use this script.Polybar
: Polybar menu bar configuration example.Limitations
: Limitations of this script.Development
: When you want to contribute to this script.TODO
: List of things and ideas left to do.
This script creates a custom Rofi menu that allows for activating and deactivating VPN connections through nmcli. When there is an active connection this connection is shown in the menu, otherwise all of the available connections are listed.
This script depends on the following packages:
rofi
networkmanager
networkmanager-openvpn
Because the script is 'just' a bash script, it can be manually placed in any desired location.
The script can be executed from bash or external tools that allow bash scripts to be used (like the Polybar menu bar). When executing the script the custom rofi menu will be started.
If the -h
flag is passed you will get a (very small) help / usage overview.
An example configuration for Polybar can be found underneath:
[module/vpn]
type = custom/text
content = "%{A1:~/.scripts/polybar/rofi-vpn.sh:} %{A}"
This menu only allows for existing connections to be activated / deactivated. Actions like adding and removing connections is done through nmcli itself.
This project has been released under the Apache License 2.0 and is considered open software. Everyone is permitted to make changes as long as the above license is followed.
See our guidelines to learn about what guidelines to follow.
Currently the width of the menu is hardcoded. We could loop through the list of connections and determine the amount of characters, which will give us the width of the menu.
This script only allows for existing VPN connections to be activated / deactivated. Adding and
removing connections is still done through nmcli
. We could consider implementing an option
that allows us to manage the connections through this menu, but this might be out of the
scope of this menu / script.