dots/shell/lockscreen/LockContext.qml
2025-06-20 12:16:25 -04:00

48 lines
1.2 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
import Quickshell.Services.Pam
Scope {
id: root
property LockState state: LockState {
onTryUnlock: {
if (this.currentText === "")
return;
this.unlockInProgress = true;
pam.start();
}
}
PamContext {
id: pam
// Its best to have a custom pam config for quickshell, as the system one
// might not be what your interface expects, and break in some way.
// This particular example only supports passwords.
configDirectory: "pam"
config: "password.conf"
// pam_unix will ask for a response for the password prompt
onPamMessage: {
if (this.responseRequired) {
this.respond(root.state.currentText);
}
}
// pam_unix won't send any important messages so all we need is the completion status.
onCompleted: result => {
if (result == PamResult.Success) {
root.state.unlocked();
root.state.currentText = "";
} else {
root.state.showFailure = true;
}
root.state.unlockInProgress = false;
}
}
}