From cde1a13140270e7de0e78c1c327cb64ed38086ac Mon Sep 17 00:00:00 2001 From: demi Date: Tue, 1 Sep 2026 10:04:46 -0500 Subject: [PATCH] fix: handle sequential PAM prompts in greeter and locker --- src/greeter.rs | 6 ++++++ src/locker.rs | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/greeter.rs b/src/greeter.rs index 4a6063f..5ef234b 100644 --- a/src/greeter.rs +++ b/src/greeter.rs @@ -1181,6 +1181,12 @@ impl cosmic::Application for App { fn update(&mut self, message: Self::Message) -> Task { match message { Message::Common(common_message) => { + if matches!(&common_message, common::Message::Prompt(_, _, Some(_))) + && self.authenticating + { + self.authenticating = false; + self.common.prompt_opt = None; + } // In greetd's IPC protocol, the greeter must acknowledge auth messages by // sending PostAuthMessageResponse. For non-interactive "info" messages // (fingerprint prompts typically come through here), the correct response diff --git a/src/locker.rs b/src/locker.rs index 482a335..c59e38e 100644 --- a/src/locker.rs +++ b/src/locker.rs @@ -709,6 +709,12 @@ impl cosmic::Application for App { match message { Message::None => {} Message::Common(common_message) => { + if matches!(&common_message, common::Message::Prompt(_, _, Some(_))) + && self.authenticating + { + self.authenticating = false; + self.common.prompt_opt = None; + } return self.common.update(common_message); } Message::OutputEvent(output_event, output) => {