Skip to content

Latest commit

 

History

History
131 lines (108 loc) · 6.88 KB

File metadata and controls

131 lines (108 loc) · 6.88 KB

Volemad - a quick systray interface to Mullvad’s WireGuard servers, written in Common Lisp

./icons/volemad-logo_small.png

Note 1

Migrated from https://gitlab.com/emacsomancer/volemad

Note 2

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.)

Additional (2022-May-2022):

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:

  • sbcl
  • sbcl-cl+ssl
  • yad
  • curl
  • wireguard-tools

You’ll also want most likely to run Mullvad’s Wireguard installer which additionally requires:

  • jq
  • openresolv

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.

Description

‘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 interface
  • volemad / volemad-yad - an implementation using a GTK3 front-end (via yad)
  • volemad-argos - a plugin for Argos (for GNOME Shell extensions), BitBar-‘compatible’, depends on volemad-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.

Features

  • 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

./screenshots/volemad-overview.png

./screenshots/close-up-of-connected-popup.png

./screenshots/close-up-of-disconnected-popup.png

Installation instructions

How to install volemad-cli

  • have a Mullvad account
  • install sbcl
  • libnotify (/ libnotify-bin on 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)

How to install volemad(-yad)

  • 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 yad and libnotify (/ libnotify-bin on 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 volemad as your ordinary user

How to install volemad-argos

  • have a Mullvad account
  • install volemad-cli as 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/

Enable the Volemad daemon [required for all operation/versions]

  • if your init/daemon-manager is runit (e.g. on Void Linux):
    • run sudo set-up-daemon-runit.sh
  • if your init/daemon-manager is systemd (e.g. on Debian/Ubuntu/Arch/etc.):
    • run sudo set-up-daemon-systemd.sh
  • 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-daemon from a terminal or have root launch on it on boot (e.g. in /etc/rc.local)

How to use it

How to interact with volemad(-yad)

  • 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

./screenshots/volemad-code.png

How to interact with the commandline volemad-cli

  • 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 -p as well)
  • the first four flags are mutually exclusive and take no argument
  • -p and -s both require arguments (and -s requires -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'

How to interact with volemad-argos

  • 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.