The daemon announces every matched finger on the system bus and stops there, because root has no session bus, no display and no business starting your applications. fingerprintd-agent is the other half: it runs as you, subscribes properly rather than parsing gdbus monitor output, filters by uid because the signal is visible to every local user, and maps fingers to commands from a file you own and can edit without restarting anything. It is a separate binary and a separate subpackage because it is a separate trust domain. /etc/fingerprintd/actions.conf is a root shell and is guarded like one; ~/.config/fingerprintd/fingers.conf runs your commands as you, so it is an ordinary dotfile. Demonstrated on the phone: one press of the unlock finger both unlocks it and opens plasma-camera.
23 lines
944 B
Desktop File
23 lines
944 B
Desktop File
# SPDX-License-Identifier: GPL-3.0-only
|
|
# SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts®
|
|
# A USER unit: it runs as you, in your session, which is the whole point.
|
|
# `systemctl --user enable --now fingerprintd-agent`
|
|
[Unit]
|
|
Description=Run things in your session when a fingerprint matches
|
|
Documentation=https://forgejo.catcrafts.net/Catcrafts/fingerprintd
|
|
# Nothing to do without a map. Absent file, absent feature.
|
|
ConditionPathExists=%h/.config/fingerprintd/fingers.conf
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/usr/bin/fingerprintd-agent
|
|
# It only listens on the system bus and spawns your commands; if it dies,
|
|
# restarting costs nothing and losing it silently would be confusing.
|
|
Restart=on-failure
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
# default.target rather than graphical-session.target: the agent needs your
|
|
# session bus, not a display, and Plasma Mobile does not reliably reach
|
|
# graphical-session.target on this device.
|
|
WantedBy=default.target
|