All Projects → ProtonVPN → Linux Gui

ProtonVPN / Linux Gui

Licence: other
GTK3 GUI client with systray, for ProtonVPN. Works on top of linux-cli.

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Linux Gui

linux-gui-legacy
(Discontinued in favor of official client) GTK3 GUI client with systray, for ProtonVPN. Works on top of linux-cli.
Stars: ✭ 181 (-9.05%)
Mutual labels:  gtk3, vpn, linux-app
Lights-Up
Philips Hue controller for Linux [WIP]
Stars: ✭ 27 (-86.43%)
Mutual labels:  gtk3, linux-app
pw3270
3270 Emulator for gtk
Stars: ✭ 38 (-80.9%)
Mutual labels:  gtk3, linux-app
Playhouse
A Playground for HTML/CSS/JavaScript
Stars: ✭ 28 (-85.93%)
Mutual labels:  desktop, linux-app
MaCoPiX
Mascot Constructive Pilot for X
Stars: ✭ 57 (-71.36%)
Mutual labels:  gtk3, linux-app
Norka
Continuous text editor for Linux
Stars: ✭ 70 (-64.82%)
Mutual labels:  gtk3, linux-app
xkcd-gtk
Comic Sticks (xkcd-gtk) is a simple xkcd comic viewer written in Go using GTK+3
Stars: ✭ 14 (-92.96%)
Mutual labels:  gtk3, linux-app
wapanel
Desktop-dedicated wayland bar for wayfire and other wlroots based compositors. Mir compatible.
Stars: ✭ 31 (-84.42%)
Mutual labels:  desktop, gtk3
Drawing
A drawing application for the GNOME desktop.
Stars: ✭ 386 (+93.97%)
Mutual labels:  linux-app, gtk3
Cpu X
CPU-X is a Free software that gathers information on CPU, motherboard and more
Stars: ✭ 676 (+239.7%)
Mutual labels:  linux-app, gtk3
Instant Lyrics
Shows lyrics of the currently playing Spotify song, or any song, instantly.
Stars: ✭ 191 (-4.02%)
Mutual labels:  linux-app, gtk3
GabTag
A gtk linux application to handle audio tags 🎵
Stars: ✭ 34 (-82.91%)
Mutual labels:  gtk3, linux-app
Notion App
Notion.so desktop application for Linux
Stars: ✭ 232 (+16.58%)
Mutual labels:  linux-app, desktop
Simple Vpn
A simple VPN allowing mesh-like communication between nodes, over websockets
Stars: ✭ 201 (+1.01%)
Mutual labels:  linux-app, vpn
Imagine
🖼️ PNG/JPEG optimization app for macOS, Windows and Linux.
Stars: ✭ 1,859 (+834.17%)
Mutual labels:  linux-app, desktop
Eww
ElKowar's wacky widgets
Stars: ✭ 322 (+61.81%)
Mutual labels:  desktop, gtk3
Desktop Legacy
VPN.ht Desktop Application for Windows and Mac OS X built on top of Electron
Stars: ✭ 83 (-58.29%)
Mutual labels:  vpn, desktop
Lotion
Unofficial Notion.so app for Linux
Stars: ✭ 1,735 (+771.86%)
Mutual labels:  linux-app, desktop
Glimmer
DSL Framework consisting of a DSL Engine and a Data-Binding Library used in Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), Glimmer DSL for Opal (Pure Ruby Web GUI), Glimmer DSL for XML (& HTML), Glimmer DSL for CSS, and Glimmer DSL for Tk (MRI Ruby Desktop Development GUI Library)
Stars: ✭ 186 (-6.53%)
Mutual labels:  desktop
Device Detector Js
A precise user agent parser and device detector written in TypeScript
Stars: ✭ 193 (-3.02%)
Mutual labels:  desktop

ProtonVPN Linux GUI

ProtonVPN Banner

Twitter Follow Subreddit subscribers

Build Status Downloads Downloads per Week

PyPI - Python Version

GitHub Workflow Status (branch)

License

Linux GUI for ProtonVPN, written in Python. Layout designed in Glade.

Development Status: Beta

The linux-gui works on top of linux-cli, making it a dependency. All local configurations are managed by the GUI (such as updating protocol, split tunneling, manage killswitch) while the connections are managed by the CLI. This way, you will be able to use the latest version of the CLI, while also being able to use the GUI.

Disclaimer: The ProtonVPN GUI is currently still an experimental interface. It requires escalated privileges and might be somehow unstable. In the near future we plan to refactor the ProtonVPN CLI and GUI so that the part of the client that really requires being executed as root user is kept to a minimum.

Table of Contents

Installing and Updating

Dependencies

Python dependencies

  • python >= 3.5
  • linux-cli >= 2.2.2
  • requests >= 2.23.0
  • configparse >= 4.0.2
  • pip for python3 (pip3)
  • setuptools for python3 (python3-setuptools)

ProtonVPN GUI dependencies

Distro Command
Fedora/CentOS/RHEL sudo dnf install -y python3-gobject gtk3
Ubuntu/Linux Mint/Debian and derivatives sudo apt install -y python3-gi python3-gi-cairo gir1.2-gtk-3.0
OpenSUSE/SLES sudo zypper install python3-gobject python3-gobject-Gdk typelib-1_0-Gtk-3_0 libgtk-3-0
Arch Linux/Manjaro sudo pacman -S python-gobject gtk3

ProtonVPN Tray dependencies

Distro Command
Fedora/CentOS/RHEL sudo dnf install -y libappindicator-gtk3 libnotify
Ubuntu/Linux Mint/Debian and derivatives sudo apt install -y gir1.2-appindicator3 libnotify-bin
OpenSUSE/SLES sudo zypper install libappindicator-gtk3 libnotify
Arch Linux/Manjaro sudo pacman -S libappindicator-gtk3 libnotify

NOTE: Gnome users will need to install an additional extension for this to work: KStatusNotifierItem/AppIndicator Support

Tray Known issues:

dbus-launch

There is a known issue when user attempts to start the systray/appindicator. This might throw an error that is similar to this one: (<app-name>:<pid>) LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Failed to execute child process "dbus-launch" (No such file or directory) if a user does not have a specific package installed. If you are unable to use the systray/appindicator and have a similar error, then a solution is provided below.

Solution: Install dbus-x11 package for your distribution, more information can be found on this stackoverflow post.

PolKit

If you would like to use pkexec instead of the terminal (or alter visudo), then you will also need to install the following packages (unsure ? Look here):

Distro Command
Fedora/CentOS/RHEL sudo dnf install -y polkit
Ubuntu/Linux Mint/Debian and derivatives sudo apt install -y libpolkit-agent-1-0
OpenSUSE/SLES sudo zypper install polkit
Arch Linux/Manjaro sudo pacman -S polkit

Installing ProtonVPN Linux GUI

Distribution based

  • Fedora/CentOS/RHEL: To-do
  • Ubuntu derivatives: To-do
  • OpenSUSE/SLES: To-do
  • Arch Linux/Manjaro: Available at AUR

PIP based

Note: Make sure to run pip with sudo

sudo pip3 install protonvpn-gui

To update to a new version

sudo pip3 install protonvpn-gui --upgrade

Manual Installation

Note: Before installing the GUI, make sure that you have previously installed the CLI, otherwise an error will be thrown.

  1. Clone this repository

    git clone https://github.com/ProtonVPN/linux-gui

  2. Step into the directory

    cd linux-gui

  3. Install

    sudo pip3 install -e .

Uninstalling ProtonVPN Linux GUI

If you have installed the GUI via PIP or by cloning this repo, then to uninstall it type in the following command:

sudo pip3 uninstall protonvpn-gui

Virtual environment

If you would like to run the the GUI within a virtual environment (for either development purposes or other), then you can easily do that with the help of pipenv. Make sure to install pipenv and additional packages before. Note: PolKit does not work within virtual environments.

Distro Command
Fedora/CentOS/RHEL sudo dnf install cairo-devel cairo-gobject-devel gobject-introspection-devel pkg-config
Ubuntu/Linux Mint/Debian and derivatives sudo apt install libcairo2-dev libgirepository1.0-dev pkg-config
OpenSUSE/SLES sudo zypper install cairo-devel gobject-introspection-devel python3-cairo-devel pkg-config
Arch Linux/Manjaro sudo pacman -S cairo base-devel gobject-introspection pkgconf
  1. git clone https://github.com/ProtonVPN/linux-gui
  2. cd linux-gui
  3. pipenv install installs the virtual environment and all necessary dependencies from Pipfile.
  4. pipenv shell enters the virtual environment.
  5. sudo pip install -e . installs the GUI in your virtual environment.
  6. protonvpn-gui starts the GUI from within the virtual environment.

How to use

ProtonVPN GUI

protonvpn-gui

ProtonVPN Tray

protonvpn-tray

Enhancements

Create .desktop file

ProtonVPN GUI

To create at desktop launcher with a .desktop file, follow the instructions below.

  1. Find the path to the package with pip3 show protonvpn-gui

    You should get something like Location: /usr/local/lib/<YOUR_PYTHON_VERSION>/dist-packages , this is where your Python packages reside. Note: Based on your distro, your Location path may not look exactly like this one, so make sure to use your own and Location path.

  2. Based on previous information, the path to your icon should be <PATH_DISPLAYED_IN_STEP_1>/linux_gui/resources/img/logo/protonvpn_logo.png

  3. Create a protonvpn-gui.desktop file in .local/share/applications/, and paste in the following code. Remember to change the Icon path to your own path.

    [Desktop Entry]
    Name=ProtonVPN
    GenericName=ProtonVPN GUI
    Exec=protonvpn-gui
    Icon=<YOUR_ICON_PATH>
    Type=Application
    Terminal=False
    Categories=Utility;GUI;Network;VPN
    

ProtonVPN Tray

To create at tray icon launcher with a .desktop file, follow the instructions below.

  1. Find the path to the package with pip3 show protonvpn-gui

    You should get something like Location: /usr/local/lib/<YOUR_PYTHON_VERSION>/dist-packages , this is where your Python packages reside. Note: Based on your distro, your Location path may not look exactly like this one, so make sure to use your own and Location path.

  2. Based on previous information, the path to your icon should be <PATH_DISPLAYED_IN_STEP_1>/linux_gui/resources/img/logo/protonvpn_logo.png

  3. Create a protonvpn-tray.desktop file in .local/share/applications/, and paste in the following code. Remember to change the Icon path to your own path.

    [Desktop Entry]
    Name=ProtonVPN Tray
    GenericName=ProtonVPN Tray
    Exec=protonvpn-tray
    Icon=<YOUR_ICON_PATH>
    Type=Application
    Terminal=False
    Categories=Utility;GUI;Network;VPN
    

Sudo/PolKit

At the moment, since the CLI protects certain files using sudo and also manages killswitch and split tunneling, the GUI will also need to have access to these sudo protected files. Thus, as it is at the moment, the GUI needs to have certain root privileges. This though is subject to change. Nonetheless, if you would like to launch the GUI without having to type in your sudo password everytime, then you could add the executable file to visudo.
Another alternative is enable PolKit Support from within the settings (pkexec command). This displays a window for the user to type the sudo password, this way, a user won't have to type the password into the terminal. Whenever you want to connect/disconnect or make some important changes to files, a window prompt will appear for you to enter the sudo password.
Note: This feature needs to be enabled from within the GUI settings for it to be able to work. If you have not installed the necessary packages, then the this feature will not work.

Visudo

The instructions for seting up visudo are described below.

  1. First you will need the path to the GUI. This can be found by typing which protonvpn-gui. You should get something like this: /usr/bin/protonvpn-gui. Save it since you will need it later. Note: As previously mentioned, the path may look different for you, based on your distro.
  2. Identify your username by typing whoami. Save it (or memorize it).
  3. In another terminal, type in sudo visudo, and a window should pop-up, scroll to the very bottom of it.
  4. Once you are at the botton, type: <YOUR_USERNAME_FROM_STEP2> ALL = (root) NOPASSWD: <YOUR_PATH_FROM_STEP1>
  5. Exit and save! Have fun :)

GUI Layout

Login

Dashboard

General Settings

Tray Settings

Connection Settings

Advanced Settings

Diagnosis Tool

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].