⇦ | otpclient [main]
Last updated on: 2026-09-17 14:12 [UTC]

Metadata for otpclient in main

com.github.paolostivanin.OTPClient.desktop - 5.1.5-1 ⚙ amd64 ⚙ arm64 ⚙ armhf ⚙ i386 ⚙ loong64 ⚙ ppc64el ⚙ riscv64 ⚙ s390x

Icon
---
Type: desktop-application
ID: com.github.paolostivanin.OTPClient.desktop
Package: otpclient
ProjectLicense: GPL-3.0+
Name:
  C: OTPClient
Summary:
  C: Application for managing TOTP/HOTP tokens with built-in encryption
Description:
  C: |-
    <p>OTPClient is a secure and easy-to-use desktop client for TOTP and HOTP one-time passwords, built with
    GTK4 and libadwaita. Features:</p>
    <ul>
      <li>multiple databases with sidebar management and cross-database search</li>
      <li>token grouping with quick filtering</li>
      <li>desktop search provider for GNOME Shell and KDE KRunner (opt-in trigger keyword)</li>
      <li>command-line companion (otpclient-cli) with scriptable table/JSON/CSV output</li>
      <li>support for TOTP, HOTP, and Steam codes</li>
      <li>configurable digits (4 to 10), period (1 to 120 seconds), and algorithm (SHA1, SHA256, SHA512)</li>
      <li>import and export of encrypted/plain Aegis backups</li>
      <li>import and export of encrypted/plain Authenticator Pro and 2FAS backups</li>
      <li>import and export of plain FreeOTP+ backups (key URI format)</li>
      <li>import of Google Authenticator migration QR codes (file, screen, webcam, clipboard)</li>
      <li>integration with the OS secret service provider via libsecret (opt-in)</li>
      <li>local database encrypted with AES-256-GCM and Argon2id key derivation; plaintext lives only in
      libgcrypt secure memory while unlocked</li>
    </ul>
Developer:
  name:
    C: Paolo Stivanin
Categories:
- System
- Security
Keywords:
  C:
  - otp
  - totp
  - hotp
  - "2fa"
  - "2factor"
  - "2fa-client"
  - "2step"
  - twostep
Url:
  homepage: https://github.com/paolostivanin/OTPClient
  bugtracker: https://github.com/paolostivanin/OTPClient/issues
Icon:
  cached:
  - name: otpclient_com.github.paolostivanin.OTPClient.jxl
    width: 48
    height: 48
  - name: otpclient_com.github.paolostivanin.OTPClient.jxl
    width: 64
    height: 64
  - name: otpclient_com.github.paolostivanin.OTPClient.jxl
    width: 128
    height: 128
  remote:
  - url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/icons/128x128/otpclient_com.github.paolostivanin.OTPClient.jxl
    width: 128
    height: 128
  stock: com.github.paolostivanin.OTPClient
Launchable:
  desktop-id:
  - com.github.paolostivanin.OTPClient.desktop
Provides:
  binaries:
  - otpclient
Screenshots:
- default: true
  caption:
    C: Empty main window
  thumbnails:
  - url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-1_224x263@1.jxl
    width: 224
    height: 263
  source-image:
    url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-1_orig.jxl
    width: 501
    height: 590
- caption:
    C: Add menu
  thumbnails:
  - url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-2_224x263@1.jxl
    width: 224
    height: 263
  source-image:
    url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-2_orig.jxl
    width: 501
    height: 590
- caption:
    C: General menu
  thumbnails:
  - url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-3_224x263@1.jxl
    width: 224
    height: 263
  source-image:
    url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-3_orig.jxl
    width: 501
    height: 590
- caption:
    C: Settings menu
  thumbnails:
  - url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-4_224x257@1.jxl
    width: 224
    height: 257
  source-image:
    url: com/github/paolostivanin.OTPClient.desktop/9c880c5cf1b2615de0c730a252759be3/screenshots/image-4_orig.jxl
    width: 352
    height: 405
Releases:
- version: "5.1.5"
  type: stable
  unix-timestamp: 1784160000
  description:
    C: |-
      <p>Bug-fix release. A database stored on a filesystem that does not implement POSIX file locks, most
      notably the Flatpak XDG document-portal path (/run/user/UID/doc/) that the file chooser hands back, could
      not be opened or created and failed with "Failed to acquire database lock: Function not implemented";
      the lock file added in 5.1.4 is now treated as best-effort. This release also stops the secure-memory
      pool from reserving the whole locked-memory budget, which had left the GTK password entry unable to lock
      its own buffer on every unlock.</p>
      <ul>
        <li>FIX: a database stored on a filesystem without lock support (the Flatpak document portal, and some
        NFS/SMB mounts) could not be opened or created, failing with "Failed to acquire database lock: Function
        not implemented". Locking is now best-effort so the database opens normally on those filesystems, while
        real locking is unchanged everywhere else (#466)</li>
        <li>FIX: the secure-memory pool consumed the whole RLIMIT_MEMLOCK budget, so the GTK password entry
        could not lock its own buffer and warned "couldn't lock 16384 bytes of memory (gtk): Cannot allocate
        memory", falling back to unlocked memory for the typed password on every unlock; the pool now leaves
        headroom for it (Debian #1141809)</li>
      </ul>
- version: "5.1.4"
  type: stable
  unix-timestamp: 1783641600
  description:
    C: |-
      <p>Bug-fix release. Following the anonymous-token fix in 5.1.3, a database containing a token with an
      out-of-range digit count still refused to open, again locking users out of every other token. The load-time
      validator was stricter than the OTP engine and the app's own UI; the accepted ranges now match the engine
      (digits 4 to 10, period 1 to 120 seconds). Any token the engine still cannot use is set aside so the
      rest of the database opens, and is preserved for repair rather than dropped.</p>
      <ul>
        <li>FIX: a database containing a token with an out-of-range digit count (or period) refused to open,
        locking users out of all their tokens. Accepted ranges now match the OTP engine (digits 4 to 10, period
        1 to 120), and any token that still cannot be loaded is kept aside and preserved instead of bricking
        the whole database (#464, follow-up to #458/#462)</li>
        <li>FIX: right-click context menus on tokens and databases were clipped to the scrolled area and needed
        scrolling to reach lower items such as "Set Group"; they now size to their contents (#465)</li>
      </ul>
- version: "5.1.3"
  type: stable
  unix-timestamp: 1783555200
  description:
    C: |-
      <p>Bug-fix release. Following 5.1.1, which restored issuer-only tokens, a database containing a token
      with neither an account name nor an issuer still refused to open, and a single such token blocked every
      other token from loading. These anonymous tokens, common in databases created before 5.1.0 added load-time
      validation, now load with a synthesized placeholder label instead of being rejected.</p>
      <ul>
        <li>FIX: a database (or import) containing a token with neither an account name nor an issuer refused
        to open on 5.1.x, locking users out of all their tokens. Such tokens now load with a synthesized "Unknown
        N" label; interactive manual entry and editing still require a name (#462, follow-up to #458)</li>
      </ul>
- version: "5.1.2"
  type: stable
  unix-timestamp: 1783382400
  description:
    C: |-
      <p>Bug-fix release. Screen and session locking, and locking on system suspend, now honor the Auto-Lock
      setting the same way the inactivity timer already did, so with Auto-Lock off the database is no longer
      locked on every screen lock. The mutual exclusivity between Auto-Lock and the Secret Service integration
      is restored.</p>
      <ul>
        <li>FIX: screensaver, session lock, and suspend now respect the Auto-Lock setting, so with Auto-Lock
        off the app no longer locks and then prompts for a password on every screen lock; Auto-Lock and Secret
        Service are mutually exclusive again, including reconciliation of a legacy both-on profile (#460, re-report
        of #279)</li>
      </ul>
ContentRating:
  oars-1.0:
    violence-cartoon: none
    violence-fantasy: none
    violence-realistic: none
    violence-bloodshed: none
    violence-sexual: none
    drugs-alcohol: none
    drugs-narcotics: none
    drugs-tobacco: none
    sex-nudity: none
    sex-themes: none
    language-profanity: none
    language-humor: none
    language-discrimination: none
    social-chat: none
    social-info: none
    social-audio: none
    social-location: none
    social-contacts: none
    money-purchasing: none
    money-gambling: none