Offline, independent TOTP 2FA manager for Linux with graphical interface.
No cloud, no phone required. Store your secrets locally, generate codes, create encrypted backups, and sync with Google Authenticator via QR codes.
By using this software, you agree to the full disclaimer terms.
Summary: Software provided "AS IS" without warranty. You assume all risks.
Full legal disclaimer: See DISCLAIMER.md
System dependencies (install with system package manager):
- python-pyqt5 (PyQt5) - REQUIRED for GUI
- gpg (GNU Privacy Guard) - REQUIRED for encryption
- oathtool (OATH Toolkit) - REQUIRED for TOTP codes
- qrencode (optional) - OPTIONAL for QR codes
# Arch Linux
sudo pacman -S python-pyqt5 oath-toolkit gnupg qrencode
# Debian/Ubuntu
sudo apt install python3-pyqt5 oathtool gpg qrencode
# Fedora/RHEL
sudo dnf install python3-pyqt5 oathtool gnupg2 qrencode-
Clone repository:
git clone https://github.com/smartlegionlab/smart-2fa-manager-desktop.git cd smart-2fa-manager-desktop -
Run:
python app.py
-
Create desktop launcher (optional):
Create file
~/Desktop/smart-2fa.sh:#!/bin/bash cd ~/smart-2fa-manager-desktop python app.py
Make it executable:
chmod +x ~/Desktop/smart-2fa.shNow double-click the script on your desktop to run the application.
Then in the GUI:
- Initialize storage (create master password)
- Click "+ Add Service" to add a new service
- Enter service name (e.g., "github") and TOTP secret
- Click "Get" to see current code
- Click "QR" to scan with phone
- Use "Backup" to create encrypted backups
| Button | Description |
|---|---|
+ Add Service |
Add a new TOTP service |
🔄 Refresh Codes |
Manually refresh all codes |
💾 Backup |
Create encrypted backup with timestamp |
📂 Restore |
Restore from encrypted backup |
| Button | Description |
|---|---|
📋 Copy |
Copy TOTP code to clipboard |
🔑 Get |
Show TOTP code in dialog |
📱 QR |
Show QR code for phone import |
🗑 Delete |
Delete service |
Creating Application Shortcuts:
The application allows you to create desktop entries directly from the menu:
- Go to File → Create Desktop Entry
- Choose locations:
- ✓ Application Menu (
~/.local/share/applications/) - adds to system app menu - □ Desktop (
~/Desktop/) - creates shortcut on desktop
- ✓ Application Menu (
- Click "Create Entry"
What happens:
- Creates
.desktopfile(s) with proper configuration - Sets executable permissions automatically
- Uses application icon if available
After creation:
- Application Menu: Log out and back in (or restart desktop) for entry to appear
- Desktop shortcut: May show "Unsecured Application Launcher" warning
- Right-click on shortcut → "Allow Launching" or "Trust"
- This is a one-time security confirmation
Note: This feature is only available on Linux systems with desktop environments that support .desktop files (GNOME, KDE, XFCE, etc.).
| Shortcut | Action |
|---|---|
Ctrl + L |
Lock storage |
Ctrl + E |
Exit application |
F1 |
Show About dialog |
Ctrl + / |
Show Keyboard Shortcuts |
| Shortcut | Action |
|---|---|
Ctrl + N |
Add new service |
Ctrl + R |
Refresh all codes |
Ctrl + B |
Create backup |
Ctrl + Shift + R |
Restore from backup |
| Shortcut | Action |
|---|---|
Ctrl + C |
Copy code to clipboard |
Ctrl + G |
Show code in dialog |
Ctrl + Q |
Show QR code dialog |
Del |
Delete service |
~/.2fa/
├── secrets.gpg # Encrypted master storage
└── backups/
└── secrets.2026-04-06_14-30-00.gpg
Compatible with bash and Python CLI versions!
- Secrets are stored locally in
~/.2fa/secrets.gpg(AES-256 encrypted with GPG) - No internet connection required - codes generated locally using
oathtool - Backups are encrypted with the same password
- QR codes let you import secrets into Google Authenticator / Aegis
- Lost your phone? Just re-scan QR codes from your Linux machine
- Your GPG password is never stored
- Backup files are encrypted with the same password
- Lock storage when leaving your computer (
Ctrl + L) - Keep backups in a safe place (encrypted USB drive, offline storage)
Your existing ~/.2fa/secrets.gpg file works without additional settings in other versions of this ecosystem!
- Bash version: smart-2fa-manager-bash
- Python CLI: smart-2fa-manager-cli
- Android/Mobile: smart-2fa-manager-android
# Just run GUI - it will detect existing storage
python app.py
# Enter your existing password- Author: @smartlegionlab
- Repository: smartlegionlab/smart-2fa-manager-desktop
- License: BSD 3-Clause
- Python 3.6+
- PyQt5
- GPG (GNU Privacy Guard)
- oathtool (OATH Toolkit)
- qrencode (optional, for QR codes)
BSD 3-Clause License - Copyright (c) 2026, Alexander Suvorov
