From 9a7cf1242d296dbdb9c03df48ab09054960295aa Mon Sep 17 00:00:00 2001 From: Leander Scherer Date: Mon, 18 May 2026 21:48:24 +0200 Subject: feat(quickshell): basic bar, tray, notification --- modules/system/quickshell/LockContext.qml | 58 +++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 modules/system/quickshell/LockContext.qml (limited to 'modules/system/quickshell/LockContext.qml') diff --git a/modules/system/quickshell/LockContext.qml b/modules/system/quickshell/LockContext.qml new file mode 100644 index 0000000..05fd1de --- /dev/null +++ b/modules/system/quickshell/LockContext.qml @@ -0,0 +1,58 @@ +import QtQuick +import Quickshell +import Quickshell.Services.Pam + +Scope { + id: root + signal unlocked() + signal failed() + + property string currentText: "" + property bool unlockInProgress: false + property string pamMessage: "" + property bool pamError: false + + onCurrentTextChanged: { + pamError = false; + pamMessage = ""; + } + + function tryUnlock() { + if (currentText === "" || unlockInProgress) return; + unlockInProgress = true; + pam.start(); + } + + function reset() { + currentText = ""; + pamError = false; + pamMessage = ""; + unlockInProgress = false; + } + + PamContext { + id: pam + configDirectory: "pam" + config: "password.conf" + + onPamMessage: { + root.pamMessage = pam.message; + root.pamError = pam.messageIsError; + if (this.responseRequired) { + this.respond(root.currentText); + } + } + + onCompleted: result => { + if (result == PamResult.Success) { + root.currentText = ""; + root.unlocked(); + } else { + root.currentText = ""; + root.pamError = true; + root.failed(); + } + root.unlockInProgress = false; + } + } +} -- cgit v1.3.1