com.github.paolostivanin.OTPClient.desktop CC-BY-4.0 GPL-3.0+ OTPClient Application for managing TOTP/HOTP tokens with built-in encryption otp totp hotp 2fa 2factor 2fa-client 2step twostep

Highly secure and easy to use OTP client written in C/GTK3 that supports both TOTP and HOTP and has the following features:

com.github.paolostivanin.OTPClient.desktop Empty main window https://raw.githubusercontent.com/paolostivanin/OTPClient/master/data/screenshots/emptymain.png Add menu https://raw.githubusercontent.com/paolostivanin/OTPClient/master/data/screenshots/addmenu.png General menu https://raw.githubusercontent.com/paolostivanin/OTPClient/master/data/screenshots/hambmenu.png Settings menu https://raw.githubusercontent.com/paolostivanin/OTPClient/master/data/screenshots/settings.png https://github.com/paolostivanin/OTPClient https://github.com/paolostivanin/OTPClient/issues info@paolostivanin.com Paolo Stivanin otpclient none none none none none none none none none none none none none none none none none none none none

OTPClient 4.3.1 includes the following improvements and fixes:

  • IMPROVED: Added configurable colors for the countdown display.
  • IMPROVED: Added support for selecting the countdown display type (numeric value or cake-style).
  • IMPROVED: Automatically disable countdown color pickers when displaying countdown as seconds.
  • IMPROVED: Updated color picker sensitivity dynamically when the display mode changes.
  • IMPROVED: Persisted tree view column widths across application restarts.
  • IMPROVED: Renamed the “OTP Value” column to “OTP” and added column IDs for width tracking.

OTPClient 4.3.0 includes the following improvements and fixes:

  • IMPROVED: Refactored the codebase to follow proper GTK coding patterns and lifecycle management
  • IMPROVED: Added an explicit shutdown event and hardened cleanup to safely handle partially initialized state
  • IMPROVED: Prevented GTK critical warnings on close while still persisting window size when available
  • IMPROVED: Added a main-window empty-state view with a clear call-to-action wired to the manual add flow
  • IMPROVED: Normalized Add menu labels to title case for improved consistency
  • IMPROVED: Enhanced treeview readability with resizable and expanding columns, ellipsized text, and monospace OTP formatting
  • IMPROVED: Replaced the validity text column with a progress bar renderer showing remaining seconds for TOTP entries
  • IMPROVED: Switched visual indicators from bar-based charts to a filled pie for clearer status representation
  • IMPROVED: Clarified header bar actions with labeled icon buttons for add and reorder controls
  • IMPROVED: Grouped export formats into app-specific submenus and clarified password dialog warning text
  • IMPROVED: Improved CLI UX for clearer and more user-friendly interactions
  • REMOVED: Legacy option-migration code that is no longer needed

OTPClient 4.2.0 the followin improvements:

  • ADDED: interactive search (ctrl-f)
  • IMPROVED: search now matches query against type, account label, and issuer uniformly
  • IMPROVED: Streamlined treeview model population to read JSON directly with safe defaults
  • IMPROVED: Simplified OTP update flow and tightened reorder/delete safety and cleanup
  • IMPROVED: Centralized app/db default initialization and early cleanup paths in app.c
  • IMPROVED: Tightened error handling by clearing config migration errors and freeing the config path
  • IMPROVED: Made early-exit cleanup safer by avoiding double-freeing the database key
  • IMPROVED: Added a helper to clear password entries and reset visibility on successful submit
  • IMPROVED: Cleared old/new password fields before the dialog closes to avoid brief exposure
  • IMPROVED: Initialized settings defaults when the config load fails and persisted them to otpclient.cfg
  • IMPROVED: Added warning dialog only when saving fallback defaults fails
  • IMPROVED: cli: improve robustness and correctness in string and file handling
  • FIXED: duplicate windows and tray icons on re-activation (#409)

OTPClient 4.1.1 the following improvements:

  • FIXED: build issue on Flatpak

OTPClient 4.1.0 the following improvements:

  • ADDED: minimize to tray with ayatana-appindicator3 (#386 thanks a lot @len-foss)
  • IMPROVED: only show memlock warning dialog when secure memory is unavailable (#397)
  • IMPROVED: allow creating a database via CLI (#392)
  • FIX: allow using different databases in flatpak (#372)
  • CHANGED: removed andOTP support

OTPClient 4.0.2 brings an important fix:

  • FIX: importing data on a first run (#376)

OTPClient 4.0.1 brings a small fix:

  • FIX: add missing ui file to CMakeLists.txt

OTPClient 4.0.0 brings the following changes:

  • CHANGE: switch from PBKDF2 to Argon2id (#358)
  • NEW: make Argon2id parameters configurable (#358)
  • NEW: add support for importing plain Aegis txt
  • FIX: various issues related to importing Aegis backups (#371)
  • FIX: improving handling of json files (#369)
  • FIX: show db parameters dynamically

OTPClient 3.7.0 brings the following changes:

  • CHANGE: deleting a row, editing a row and showing the qr code is now done via right click on the target row (#359)
  • FIX: multiple fixes to QR handling (#364)
  • FIX: exporting to FreeOTP+ format (#367))
  • FIX: updated otpclient and otpclient-cli man pages (thanks @fvcr)
  • FIX: code more readable thanks to macros

OTPClient 3.6.0 brings a new feature and internal improvements:

  • NEW: add possibility to import plain/encrypted backups using the CLI
  • FIX: make GUI and CLI independent, so that CLI only can be built and installed without GTK.
  • FIX: check file size against memlock before importing a backup
  • FIX: code cleanup and internal refactoring

OTPClient 3.5.2 brings some small improvements:

  • NEW: add possibility to export plain/encrypted Authenticator Pro/2FAS backups using the CLI
  • FIX: improve popover layout
  • FIX: exporting plaing Aegis via CLI
  • FIX: cleanup code

OTPClient 3.5.1 brings a small improvement and some code clean-up:

  • NEW: add back buttons to the various popover menus
  • FIX: split popovers into their own UI files
  • FIX: remove upgrade message when upgrading from a version older than 2.6.0

OTPClient 3.5.0 brings some new features and improvements:

  • NEW: add support for importing and exporting plain/encrypted 2FAS backups (#322)
  • NEW: add support for importing and exporting plain/encrypted AuthenticatorPro backups (#322)
  • CHANGE: show warning when exporting a plain backup
  • CHANGE: remove support for older Glib and GCrypt
  • FIX: add 2fa keyword to the desktop file (#349)
  • FIX: remove custom keywords from metadata file (#348)
  • FIX: returning to a dialog won't crash the widget

OTPClient 3.4.1 brings a single fix::

  • FIX: fix FreeOTP+ export (thanks @hubnut)

OTPClient 3.4.0 brings the following changes:

  • NEW: you can now specify a database when calling the CLI (#340)
  • FIX: handling errors when path and/or password is incorrect (#336)
  • FIX: prompt for file again, if needed (#335)
  • FIX: prevent about dialog from hiding
  • FIX: use system RNG as source of entropy

OTPClient 3.3.0 brings the following changes:

  • NEW: set background to red when delete mode is entered (#323)
  • FIX: handling of base32 string (#328)

OTPClient 3.2.1 fixes a couple of issues.

  • FIX: increase secure memory pool to 64 MB, if possible
  • FIX: parsing of big aegis encrypted json

OTPClient 3.2.0 fixes a couple of issues.

  • NEW: add file chooser dialog on export (#305)
  • FIX: overwrite exported file instead of appending it (#305)
  • FIX: exported file will be accessible only by the current user (#305)
  • FIX: multiple issues related to failed first launch (#303)
  • FIX: couple of issues with secret-service

OTPClient 3.1.9 brings a couple of fixes:

  • fix db corruption (#301)
  • fix crash when user changes db multiple times

OTPClient 3.1.8 brings a single fix

  • Fix importing Aegis plain json

OTPClient 3.1.7 brings many fixes

  • Add new Database info dialog
  • Fix crash when no row is selected (#295)
  • Fix UI when creating/changing a database
  • Multiple fixes when creating a new database
  • Use current db folder when creating/changing database
  • Fix memory leak in case of error when opening the settings dialog

OTPClient 3.1.6 fixes a security issue.

  • quit the password dialog when either the cancel or close button is pressed

OTPClient 3.1.5 fixes an issue when dealing with symlink

  • allow the db to be a symlink and follow it correctly (#289)

OTPClient 3.1.4 brings some fixes

  • make auto-lock and secret service mutually exclusive (#279)
  • fix importing plain AEGIS (#281)
  • fix importing encrypted AEGIS on some distros (#281)
  • rename disable_secret_service setting to use_secret_service

OTPClient 3.1.3 brings some fixes

  • Fix Aegis import/export when using long pwds (>64 chars)
  • Fix secret service cleanup
  • Show the correct error message when import fails
  • Use g_utf8_strlen instead of strlen

OTPClient 3.1.2 brings compatibility with newer cotp.

  • Add compatibility with libcotp >= 2.0.0

OTPClient 3.1.1 brings lots of small under-the-hood changes:

  • Fixed some memory leaks
  • Improved error handling
  • Use secure functions instead of standard ones

OTPClient 3.1.0 the following feature and fixes:

  • New feature (#258): entries can be displayed as a QR-Code
  • Updated the artwork credits in the about dialog
  • All keyboard shortcuts have been revised, be sure to check them (Ctrl-k)
  • Code cleanup

OTPClient 3.0.0 brings some exciting news:

  • New feature (#263): OTPClient is now translatable (open a GitHub issue if you want to help translating it in your language).
  • New feature (#259): it's now possible to edit also the secret.
  • Improved: an About dialog has been added in the settings menu.
  • Removed (#257): Authenticator Plus support has been removed.
  • Various small fixes.

OTPClient 2.6.4 fixes an import issue

  • fix issue when importing encrypted AEGIS backup.

OTPClient 2.6.3 fixes an issue when setting the migration flag

  • fix ternary operator logic that would incorrectly set the migration flag

OTPClient 2.6.2 add an upgrade message

  • warn user about new secret service behavior

OTPClient 2.6.1 some fixes and a new feature

  • add ability to import Google migration QR also via webcam
  • fix double free in case of error

OTPClient 2.6.0 brings lots of new features

  • add support for importing SVG tokens
  • add support for importing and exporting Aegis encrypted backups
  • add support for importing Google otpauth-migration QR codes
  • improve enetry deletion workflow
  • add support for libsecret
  • show video feed when importing a token using the webcam
  • fix andOTP import bug

OTPClient 2.5.1

  • Fix markup on change database dialog

OTPClient 2.5.0 brings load of new features

  • NEW: rows can now be sorted. Enable the sorting mode by using the "up down" arrows button on the top, then drag and drop rows where you want (#184).
  • NEW: added a dark theme (enable it settings) (#207)
  • NEW: allow to switch database. This is useful if you have multiple OTPClient databases (e.g. work, personal, etc) (#186)
  • NEW: add a button to lock the app (#236)
  • FIX: when app is locked, the content is now hidden (#235)
  • FIX: it's now possible to change the database, if the wrong one was selected during the first run (#196)

OTPClient 2.4.9.1 fix a regression

  • fix importing QR code both when URI contains and doesn't contain one or more UTF-8 chars.

OTPClient 2.4.9 fix an import issue

  • fix importing QR code (issue#240)
  • better error when importing a QR fails

OTPClient 2.4.8 brings a couple of fixes

  • fix show next OTP option (issue#234)
  • correctly decode URIs from QR codes

OTPClient 2.4.7 implements some small code optimization

  • do not use strlen in for loop
  • do not use strlen to check for empty string

OTPClient 2.4.6 fixes some small issues

  • check for NULL when comparing account and issuer
  • use secure_strdup when trimming the account key
  • fix account/issuer when importing andOTP db (tested with latest available version)
  • use g_memdup2 when available

OTPClient 2.4.4 disabled a broken feature

  • remove possibility to sort columns by either account or issuer due to GtkTreeView issues. This feature will come back with 3.0.0

OTPClient 2.4.3 contains some small fixes

  • fix a small andOTP export bug
  • fix wrong icon in taskbar
  • remove hard-coded paths from get-builder.c

OTPClient 2.4.2 contains a small fix to andOTP handling

  • fix handling of andOTP data when importing/exporting, thanks to Michal Borek for the contribution

OTPClient 2.4.1 bring a new feature to the CLI

  • add export command to otpclient-cli

OTPClient 2.3.2 brings a small fix and a new icon

  • fix incorrect code is shown when sorting by label/issuer
  • new icon, thanks a lot @bertob

OTPClient 2.3.1 brings a security fix

  • fix a memory leak when exporting to freeotp format

OTPClient 2.3.0 brings support for a new provider

  • add support for importing and exporting plain json Aegis backups

OTPClient 2.2.1 fixes a long standing bug

  • fixed a bug that prevented andotp backups generated with a long password to be correctly imported

OTPClient 2.2.0 brings support for FreeOTP+

  • it's now possible to import and export FreeOTP+ backup (key URI format only)
  • minor fixes to the first startup dialog

OTPClient 2.1.0 brings some minor enhancements to the UX

  • save sort order on exit and allow user to reset it to the default value using the button located in the settings menu
  • on first start, allow user select whether a new database has to be created or an existing one has to be imported

OTPClient 2.0.1 is a minor release that brings some fixes

  • show dialog if memlock value is too low
  • fix memory leak on parse-uri
  • fix a double free in case of a crash
  • better error handling
  • multiple fixes to db handling

OTPClient 2.0.0 is a major release that brings tons of new features

  • add plain text import/export for andOTP
  • add lock feature
  • add CLI (currently supports list and show commands)
  • support import/export of encrypted andOTP backups generated with version >=0.6.3
  • treeview can now be sorted by clicking on the account/issuer column header
  • QR code can be added from clipboard (supports both gnome and kde)
  • minor fixes

OTPClient 1.5.1 brings some small flatpak related fixes

OTPClient 1.5.0

  • add shortcut to quit the application
  • use native dialog for open and save actions
  • show error dialog if database is missing
  • rename "label" to "account name"
  • correctly handle empty label and/or issuer when editing a row
  • respect XDG_CONFIG_HOME

OTPClient 1.4.1 brings some fixes to the flatpak version.

  • fix setting menu not being accessible
  • fix window size not being remembered

OTPClient 1.4.0 brings full support to andOTP.

  • it's now possible to export encrypted andOTP backups
  • use monospace to show the database path on startup

OTPClient 1.3.1 brings some fixes to bugs that were introduced with the previous version.

  • fixed a bug that caused a row with an empty issuer to be treated as a steam code
  • fixed an issue that prevented the same item to be deleted and added again
  • the correct password dialog is displayed when importing something while the local db is empty

OTPClient 1.3.0 brings a lot of new features and fixes.

  • reworked UI
  • support for custom digits (between 4 and 10 inclusive)
  • support for custo period (between 10 and 120 seconds inclusive)
  • support for Steam tokens
  • add keyboard shortcuts
  • add settings menu
  • search by either label or issuer

OTPClient 1.2.2 brings some small fixes.

  • add "native" support for Ubuntu 16.04
  • add shippable support

OTPClient 1.2.2 brings some minor fixes.

OTPClient 1.2.2 brings some minor fixes.

  • it's now possible to edit the label and issuer fields
  • when a row is ticked, the otp value is automatically copied to the clipboard (which is erased before terminating the program)
  • a small help is shown on the first start
  • 3 new ways to add a token in addition to Manually (screenshot, using webcam and by selecting a qrcode)
  • some bugs fixed
  • cmake related improvements