Migrated from https://gitlab.com/emacsomancer/volemad
The newer versions of the official Mullvad client seem to show up properly in the systray and connect quickly, so there is probably no longer a need for this application. (Though at some point I might try to re-write it to use the Mullvad daemon directly rather than having a separate daemon to talk to Wireguard.)
On some OSes which didn’t have native official Mullvad packages, I’ve been using NixOS’s Mullvad package. Unfortunately, on Guix System, while using NixOS’s Mullvad package works more-or-less, it has problems with DNS lookup (which I don’t quite understand). Volemad works on Guix though, so that’s my current solution on my Guix machine. Requires installing the following Guix packages:
sbclsbcl-cl+sslyadcurlwireguard-tools
You’ll also want most likely to run Mullvad’s Wireguard installer which additionally requires:
jqopenresolv
The daemon should be run as root/with sudo. The binaries will be installed in /usr/local/bin, which is not, by default, in Guix’s $PATH.
‘VOLEMAD is an application for quickly interacting with Mullvad’s WireGuard servers, written in Common Lisp.
There currently are three ‘versions’ of Volemad:
volemad-cli- a commandline interfacevolemad/volemad-yad- an implementation using a GTK3 front-end (via yad)volemad-argos- a plugin for Argos (for GNOME Shell extensions), BitBar-‘compatible’, depends onvolemad-cli[Nb.: Unfortunately Argos appears to be currently broken in the latest GNOME Shell]
All three ‘versions’ depend on volemad-daemon, a simple daemon written in portable shell script, intended to be run as a system daemon.
Backstory: Volemad was written after increasing frustration with the official Mullvad Electron app which began not showing up in the systray on my system. A happy side effect: this app is much faster than the Electron app, and has a different feature set than the official app.
- connect, disconnect, and change servers extremely quickly (much faster than with the official app)
- get a quick report on your apparent current location
- automatically reconnects to a different server in the same selected region (city, country, or global) if server is reported as blacklisted
- systray icon (in the graphical versions) indicates whether currently connected to a Mullvad server or not
- have a Mullvad account
- install
sbcl libnotify(/libnotify-binon Debian/Ubuntu) is required if you want pop-up notifications for location- install WireGuard and other requirements and run Mullvad’s configuration script as detailed at https://mullvad.net/en/help/wireguard-and-mullvad-vpn/
- cd into
volemad-cli - run
make - then
sudo make install - then enable the appropriate system daemon (see below)
- have a Mullvad account
- install
sbcl - install WireGuard and other requirements and run Mullvad’s configuration script as detailed at https://mullvad.net/en/help/wireguard-and-mullvad-vpn/
- install
yadandlibnotify(/libnotify-binon Debian/Ubuntu) - cd into
volemad-yad - run
make - then run
sudo make install - then enable the system daemon (see below)
- launch the Volemad frontend by running
volemadas your ordinary user
- have a Mullvad account
- install
volemad-clias detailed above - install the Argos GNOME extension (again, Nb.: Argos seems to be broken on the lastest GNOME Shell)
- cd into
volemad-argos - run
make - then run
sudo make install - then
cp /usr/local/share/volemad-argos/volemad-argos ~/.config/argos/
- if your init/daemon-manager is
runit(e.g. on Void Linux):- run
sudo set-up-daemon-runit.sh
- run
- if your init/daemon-manager is
systemd(e.g. on Debian/Ubuntu/Arch/etc.):- run
sudo set-up-daemon-systemd.sh
- run
- if your init/daemon-manger is something else:
- tell me the appropriate way of setting up a root daemon for your init/daemon-manager
- and, as a stop-gap, run
sudo volemad-daemonfrom a terminal or have root launch on it on boot (e.g. in/etc/rc.local)
- right-click on systray icon for a drop-down menu allowing interaction with WireGuard connection, then left-click on:
- “DISCONNECT” to disconnect
- “QUIT” to quit
- “RANDOM server” to connect to a random Mullvad WireGuard server
- COUNTRY name to connect to a random server in $COUNTRY
- CITY name to connect to random server in $CITY
- left-click on systray icon to (if you have
libnotify) get a pop-up notification with your current apparent IP location information (via ipapi) - hover over the systray icon for information about the current Mullvad server (if connected)
- icon reports status:
- dark bluish icon indicates connection to Mullvad
- red icon indicates no connection to Mullvad
- flags:
-d= disconnect VPN-r= connect to a random Mullvad relays-l= show a pop-up notification with apparent location information-b= force a fresh rebuild of Volemad’s database of Mullvad relays-p= connect to a relay in a specified country-s= connect to a relay in a specified city (requires-pas well)
- the first four flags are mutually exclusive and take no argument
-pand-sboth require arguments (and-srequires-p)- examples:
- disconnect from VPN:
volemad -d- connect to a relay in Finland:
volemad -p 'Finland'- connect to a relay in Salt Lake City, Utah, USA:
volemad -p 'USA' -s 'Salt Lake City, UT'- similar to interaction with
volemad(-yad); but, Nb.: I have not been able to properly test due to current GNOME Shell breakage of the Argos extension.



