- C++ 89.2%
- Shell 10.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
package / package (push) Successful in 1m23s
FUNDING.yml is the file Forgejo reads for a repository's Donate button (Forgejo 17.0 and later: .forgejo/, .github/, then the root of the default branch); it points at https://catcrafts.net/shop/donation. The README closes with the footer shared by imsd, fingerprintd and fp6-img: License, Funding, Copyright. |
||
| .forgejo/workflows | ||
| implementations | ||
| interfaces | ||
| packaging | ||
| tests | ||
| .gitignore | ||
| FUNDING.yml | ||
| LICENSE | ||
| lint-rules.h | ||
| project.cpp | ||
| README.md | ||
fingerprintd
Fingerprint daemon for the Fairphone 6 (milos, SM7635) on mainline Linux.
fingerprintd-core is a static library with no GLib, no libqcomtee and no
system headers. Everything in it is a wire format or a state machine that was
recovered by reverse-engineering, so all of it is pinned by tests that run on a
dev box with no phone, no TEE and no sensor. The daemon shell holds everything
that touches hardware.
fprintd-enroll -f right-index-finger user ten stages, enroll-completed
fprintd-list user - #0: right-index-finger
fprintd-verify user (wrong finger) verify-no-match, on the first press
fprintd-verify user (enrolled finger) verify-match, on the first press
Lock-screen unlock
Two routes, both on by default:
- PAM. The daemon provides
fprintd, so a lock screen that runspam_fprintdbeside its password prompt unlocks by finger the usual way. Plasma's does (kde-fingerprint; thefingerprint-authandpostloginservices it needs are shipped here). Phosh's cannot: its PAM conversation answers every prompt with the password, so a fingerprint module in its stack would only stall the password behind the fingerprint timeout. - Standby. While the session in front on its seat is locked and the
display is on, the daemon runs a verify of its own and answers a match with
logind's
Session.Unlock, which Phosh honours. No verify runs while the display is off (an open verify polls the sensor at ~5 Hz; the display state comes from the backlight'sbl_poweror the panel's DRMdpms, and a device with neither is treated as always on). Any fprintd client takes precedence: aClaimcancels the standby verify, aReleasere-arms it. Only fingers named in that session owner's map unlock, and the map is re-read at every arm, so a finger deleted while locked stops counting at once. Per-fingerno-unlockrules apply here too, and every match is announced asFingerMatchedfor the session agent.--standby-unlock=offdisables it.
Per-finger macros
The trustlet reports which finger matched, so a finger can mean more than "it was you". Two files, in two trust domains:
~/.config/fingerprintd/fingers.confruns a command as you, in your session. This is how a finger opens an application./etc/fingerprintd/actions.confruns a command as root, and can mark a finger as one that never unlocks.
In your session: fingers.conf
# ~/.config/fingerprintd/fingers.conf
right-ring-finger kde-open camera
left-index-finger plasma-settings
left-thumb sh -c 'notify-send "hello from a finger"'
- using these requires the fingerprintd-agent service to be running.
As root: actions.conf
# /etc/fingerprintd/actions.conf
# <finger> [no-unlock] [absolute command...]
right-ring-finger /usr/local/bin/toggle-something
left-little-finger no-unlock /etc/fingerprintd/panic.sh
left-thumb no-unlock
no-unlock: the finger matches and the client is told it did not. PAM seesverify-no-match, the standby unlock stays locked. The command, if there is one, runs regardless.- the command: an absolute path, run by root through
/bin/sh -cwith a fixedPATHandFINGERPRINTD_FINGERset to the finger's name, detached from the daemon with its stdio on/dev/null, so it may block or reboot the phone without stalling the sensor. - a line needs at least one of the two, and a finger gets at most one line.
- editing this file requires a restart of the fingerprintd service before changes take effect.
Runtime dependencies
The focal64 trustlet is proprietary and is not in this repo. It is
extracted from the device's own stock Android partition on first boot by the
fp6-vendor-blobs mechanism, the same way other firmware in fp6-img is.
License
GPL-3.0-only - see LICENSE.
Funding
https://catcrafts.net/shop/donation - see FUNDING
Copyright
Copyright (C) 2026 Catcrafts® catcrafts.net