mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-05 06:59:50 -05:00
48 lines
1.2 KiB
QML
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;
|
|
}
|
|
}
|
|
}
|