openfortivpn-gui

module
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2026 License: GPL-3.0

README

openfortivpn-gui

GitHub go.mod Go version GitHub release GitHub license

openfortivpn-gui screenshot

A modern GTK4/libadwaita GUI client for Fortinet SSL VPN on Linux, wrapping the openfortivpn CLI tool.

Features

  • Multiple VPN Profiles - Create, edit, and manage multiple VPN connection profiles
  • Multiple Authentication Methods: Username/Password, OTP, Client Certificate, SAML/SSO
  • System Tray Integration - Minimize to tray, quick connect/disconnect (setup notes)
  • Desktop Notifications - Connection status notifications
  • Secure Credential Storage - Passwords stored in system keyring (libsecret); a password the gateway rejects is discarded so the next connection prompts for it again. On 2FA profiles, where a rejected one-time token is indistinguishable from a rejected password, the profile editor's Forget button clears the saved password instead. Switching a profile to certificate or SAML authentication discards its saved password too
  • Auto-Connect - Optionally connect to last used profile on startup
  • Auto Reconnect - Automatically reconnect if the connection drops unexpectedly (configurable per profile)
  • Configurable Routing - DNS, routes, and split tunneling (half-internet routes)

Installation

NixOS / Nix

Add shini4i/nixpkgs as a flake input or install directly:

# Enable binary cache for faster installs
cachix use shini4i

# Install
nix profile install github:shini4i/nixpkgs#openfortivpn-gui

A NixOS module is also available for declarative configuration.

Arch

[!NOTE] This package is not officially maintained by the author. For questions or issues, please open an issue on the AUR package page, not this repository.

Install package from AUR

yay -S openfortivpn-gui-bin

After installation, enable passwordless VPN operations:

sudo usermod -aG openfortivpn-gui $USER
# Log out and back in

Fedora

Download the .rpm package from GitHub Releases:

sudo dnf install ./openfortivpn-gui-*.rpm

After installation, enable passwordless VPN operations:

sudo usermod -aG openfortivpn-gui $USER
# Log out and back in, then:
sudo systemctl enable --now openfortivpn-gui-helper

Debian/Ubuntu

[!WARNING] Requires libadwaita 1.7+, available on Debian 13 (Trixie) and later, and Ubuntu 25.04 and later. Older releases (e.g. Ubuntu 24.04 LTS) ship an incompatible libadwaita and are not supported.

Download the .deb package from GitHub Releases:

sudo apt install ./openfortivpn-gui_*.deb

After installation, enable passwordless VPN operations:

sudo usermod -aG openfortivpn-gui $USER
# Log out and back in, then:
sudo systemctl enable --now openfortivpn-gui-helper

Verifying Releases

Releases ship SBOMs and a keyless cosign signature over the checksum file:

cosign verify-blob \
  --bundle openfortivpn-gui_<version>_checksums.txt.sigstore.json \
  --certificate-identity-regexp 'https://github.com/shini4i/openfortivpn-gui' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  openfortivpn-gui_<version>_checksums.txt

Building from Source

# Enter development shell with all dependencies
nix develop

# Build and run
task build
task run

Usage

  1. Launch openfortivpn-gui
  2. Click "+" to create a VPN profile
  3. Configure server, authentication method, and routing options
  4. Select a profile and click "Connect"

Set OPENFORTIVPN_GUI_DEBUG=1 for debug logging (the helper daemon also accepts a -debug flag).

System Tray

Tray integration uses the StatusNotifierItem (SNI) D-Bus protocol — the cross-desktop standard supported by KDE Plasma, XFCE, Waybar, and most panels. On startup the app probes D-Bus for a registered SNI host: if one is found and at least one profile exists, it starts minimized to tray; otherwise the main window is presented so the UI is never unreachable.

Two environments need extra setup for tray mode:

[!NOTE] There is no in-app workaround for a missing SNI host. XEmbed is X11-only and unavailable under Wayland, and GTK4 removed GtkStatusIcon entirely — without a host process listening on the bus, there is no tray to render into.

License

GPL-3.0 - see LICENSE for details.

Acknowledgments

Directories

Path Synopsis
Package assets embeds application image assets so they are available to the compiled binary without relying on files on disk.
Package assets embeds application image assets so they are available to the compiled binary without relying on files on disk.
cmd
openfortivpn-gui command
Package main provides the entry point for openfortivpn-gui application.
Package main provides the entry point for openfortivpn-gui application.
openfortivpn-gui-helper command
Package main provides the entry point for the openfortivpn-gui-helper daemon.
Package main provides the entry point for the openfortivpn-gui-helper daemon.
internal
client
Package client provides the client for communicating with the helper daemon.
Package client provides the client for communicating with the helper daemon.
config
Package config manages application-level configuration.
Package config manages application-level configuration.
fileutil
Package fileutil provides common file operations.
Package fileutil provides common file operations.
helper/manager
Package manager provides the VPN connection manager for the helper daemon.
Package manager provides the VPN connection manager for the helper daemon.
helper/protocol
Package protocol defines the message types for communication between the openfortivpn-gui application and the privileged helper daemon.
Package protocol defines the message types for communication between the openfortivpn-gui application and the privileged helper daemon.
helper/server
Package server provides the UNIX socket server for the helper daemon.
Package server provides the UNIX socket server for the helper daemon.
keyring
Package keyring provides secure credential storage using the system keyring.
Package keyring provides secure credential storage using the system keyring.
logging
Package logging provides structured logging setup using log/slog.
Package logging provides structured logging setup using log/slog.
profile
Package profile provides VPN profile management functionality.
Package profile provides VPN profile management functionality.
reconnect
Package reconnect provides automatic VPN reconnection management.
Package reconnect provides automatic VPN reconnection management.
ui
Package ui provides the GTK4/libadwaita user interface for openfortivpn-gui.
Package ui provides the GTK4/libadwaita user interface for openfortivpn-gui.
vpn
Package vpn provides VPN connection management for openfortivpn.
Package vpn provides VPN connection management for openfortivpn.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL