From dde39a91e35697f1bf72b3b709981b882eaea8a0 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sat, 4 Jul 2026 22:19:23 +0530 Subject: [PATCH 1/3] Fast loop fprint auth --- src/MainWindow.vala | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 616ae938..09cb4265 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -18,6 +18,8 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { private Greeter.DateTimeWidget datetime_widget; private unowned LightDM.UserList lightdm_user_list; + private string? saved_credential = null; + private int current_user_card_index = -1; private unowned Greeter.BaseCard? current_card = null; @@ -270,15 +272,24 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { case Greeter.FPrintUtils.MessageText.FPRINT_TIMEOUT: case Greeter.FPrintUtils.MessageText.FPRINT_ERROR: case Greeter.FPrintUtils.MessageText.OTHER: - current_card.use_fingerprint = false; break; default: current_card.use_fingerprint = true; + saved_credential = null; break; } } private void show_prompt (string text, LightDM.PromptType type = LightDM.PromptType.QUESTION) { + if (saved_credential != null) { + try { + lightdm_greeter.respond (saved_credential); + } catch (Error e) { + critical (e.message); + } + } else { + do_connect_username (((UserCard) current_card).lightdm_user.name); + } if (current_card is ManualCard) { if (type == LightDM.PromptType.SECRET) { ((ManualCard) current_card).ask_password (); @@ -492,14 +503,7 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } private void do_connect (string? credential) { - if (credential != null) { - try { - lightdm_greeter.respond (credential); - } catch (Error e) { - critical (e.message); - } - } - + saved_credential = credential; carousel.interactive = false; carousel.scroll_to (current_card); } From 95c2e8b54843369c7af9a50a018241ccfb75aa11 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 5 Jul 2026 16:42:13 +0530 Subject: [PATCH 2/3] Don't deadcode manual card login --- src/MainWindow.vala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 09cb4265..7de2acd0 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -281,6 +281,14 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } private void show_prompt (string text, LightDM.PromptType type = LightDM.PromptType.QUESTION) { + if (current_card is ManualCard) { + if (type == LightDM.PromptType.SECRET) { + ((ManualCard) current_card).ask_password (); + } else { + ((ManualCard) current_card).wrong_username (); + } + } + if (saved_credential != null) { try { lightdm_greeter.respond (saved_credential); @@ -290,13 +298,6 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } else { do_connect_username (((UserCard) current_card).lightdm_user.name); } - if (current_card is ManualCard) { - if (type == LightDM.PromptType.SECRET) { - ((ManualCard) current_card).ask_password (); - } else { - ((ManualCard) current_card).wrong_username (); - } - } } // Called after the credentials are checked, might be authenticated or not. From 41b79dc361be8ca6e2955a2ab1140cd7dc6b9e99 Mon Sep 17 00:00:00 2001 From: Vishal Rao Date: Sun, 5 Jul 2026 16:46:26 +0530 Subject: [PATCH 3/3] Break wrong-passwd auth loop for non-fprint users --- src/MainWindow.vala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 7de2acd0..4204fe3b 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -340,6 +340,8 @@ public class Greeter.MainWindow : Gtk.ApplicationWindow { } } + saved_credential = null; + if (user_card != null) { try { lightdm_greeter.authenticate (user_card.lightdm_user.name);