1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-13 09:12:08 -04:00

greeter(auth): Enhance fingerprint/U2F auth support w/Quickshell PAM

- Split auth capability state by lock screen and greeter
- Share detection between settings UI and lock runtime
- Broaden greeter PAM include detection across supported distros
This commit is contained in:
purian23
2026-03-12 15:06:07 -04:00
parent 908e1f600e
commit 727d9c6c22
9 changed files with 796 additions and 106 deletions

View File

@@ -167,7 +167,7 @@ Scope {
PamContext {
id: fprint
property bool available
property bool available: SettingsData.lockFingerprintReady
property int tries
property int errorTries
@@ -223,7 +223,7 @@ Scope {
PamContext {
id: u2f
property bool available
property bool available: SettingsData.lockU2fReady
function checkAvail(): void {
if (!available || !SettingsData.enableU2f || !root.lockSecured) {
@@ -288,26 +288,6 @@ Scope {
}
}
Process {
id: availProc
command: ["sh", "-c", "fprintd-list \"${USER:-$(id -un)}\""]
onExited: code => {
fprint.available = code === 0;
fprint.checkAvail();
}
}
Process {
id: u2fAvailProc
command: ["sh", "-c", "(test -f /usr/lib/security/pam_u2f.so || test -f /usr/lib64/security/pam_u2f.so) && (test -f /etc/pam.d/dankshell-u2f || test -f \"$HOME/.config/Yubico/u2f_keys\")"]
onExited: code => {
u2f.available = code === 0;
u2f.checkAvail();
}
}
Timer {
id: errorRetry
@@ -371,14 +351,15 @@ Scope {
onLockSecuredChanged: {
if (lockSecured) {
availProc.running = true;
u2fAvailProc.running = true;
SettingsData.refreshAuthAvailability();
root.state = "";
root.fprintState = "";
root.u2fState = "";
root.u2fPending = false;
root.lockMessage = "";
root.resetAuthFlows();
fprint.checkAvail();
u2f.checkAvail();
} else {
root.resetAuthFlows();
}
@@ -391,10 +372,18 @@ Scope {
fprint.checkAvail();
}
function onLockFingerprintReadyChanged(): void {
fprint.checkAvail();
}
function onEnableU2fChanged(): void {
u2f.checkAvail();
}
function onLockU2fReadyChanged(): void {
u2f.checkAvail();
}
function onU2fModeChanged(): void {
if (root.lockSecured) {
u2f.abort();