Update passwordless GDM backport patch series

* Add required pre-changes and update post-changes.
* Drop fingeprint fix, it's not needed anymore.

Resolves: https://redhat.atlassian.net/browse/RHEL-232973
This commit is contained in:
Joan Torres Lopez 2026-08-07 00:47:12 +02:00
parent c77fc69648
commit f7154df44a
No known key found for this signature in database
7 changed files with 6462 additions and 1547 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,13 +4,13 @@ Date: Tue, 16 Apr 2024 20:49:40 +0200
Subject: [PATCH] data: Update generated stylesheets
---
data/theme/gnome-shell-dark.css | 492 +++++++++++++++++-----
data/theme/gnome-shell-high-contrast.css | 508 ++++++++++++++++++-----
data/theme/gnome-shell-light.css | 491 +++++++++++++++++-----
3 files changed, 1161 insertions(+), 330 deletions(-)
data/theme/gnome-shell-dark.css | 495 +++++++++++++++++-----
data/theme/gnome-shell-high-contrast.css | 511 ++++++++++++++++++-----
data/theme/gnome-shell-light.css | 495 +++++++++++++++++-----
3 files changed, 1171 insertions(+), 330 deletions(-)
diff --git a/data/theme/gnome-shell-dark.css b/data/theme/gnome-shell-dark.css
index 82e68c5..e112db8 100644
index 82e68c5..5a1340c 100644
--- a/data/theme/gnome-shell-dark.css
+++ b/data/theme/gnome-shell-dark.css
@@ -42,7 +42,9 @@ stage {
@ -18,7 +18,7 @@ index 82e68c5..e112db8 100644
transition-duration: 100ms; }
-.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button, .login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-title,
+.login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
.unlock-dialog-notifications-container .unlock-dialog-notification-source StButton, .unlock-dialog .button,
@ -30,7 +30,7 @@ index 82e68c5..e112db8 100644
.message .message-header .unlock-dialog .message-close-button,
-.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
-#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
+#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.next-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-auth-menu-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
.message .message-header .message-close-button, .message-notification-group .message-collapse-button, .calendar .calendar-month-header .pager-button, .button {
@ -285,7 +285,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button,
-.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-dialog-auth-list-item {
+.unlock-dialog .login-dialog-button.login-dialog-auth-menu-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.1); }
@ -300,7 +300,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .web-login-intro-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-button:focus,
+ .unlock-dialog .web-login-prompt-button:focus, .unlock-dialog .login-dialog-auth-list-title:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
color: #fafafb;
box-shadow: inset 0 0 0 2px st-transparentize(st-mix(-st-accent-color, #ffffff, 60%), 0.2) !important;
@ -315,7 +315,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .web-login-intro-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-button:focus:hover,
+ .unlock-dialog .web-login-prompt-button:focus:hover, .unlock-dialog .login-dialog-auth-list-title:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), rgba(250, 250, 251, 0.13), 5%); }
.unlock-dialog-notifications-container .message StButton:hover,
@ -330,7 +330,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .web-login-intro-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-button:hover,
+ .unlock-dialog .web-login-prompt-button:hover, .unlock-dialog .login-dialog-auth-list-title:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.13); }
@ -345,7 +345,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-dialog-auth-list-item:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .web-login-intro-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-button:active,
+ .unlock-dialog .web-login-prompt-button:active, .unlock-dialog .login-dialog-auth-list-title:active, .unlock-dialog .login-dialog-auth-list-item:active {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.16); }
@ -360,7 +360,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .web-login-intro-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-button:active:hover,
+ .unlock-dialog .web-login-prompt-button:active:hover, .unlock-dialog .login-dialog-auth-list-title:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
background-color: rgba(250, 250, 251, 0.19); }
.unlock-dialog-notifications-container .message StButton:active:focus,
@ -375,7 +375,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .web-login-intro-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-button:active:focus,
+ .unlock-dialog .web-login-prompt-button:active:focus, .unlock-dialog .login-dialog-auth-list-title:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), rgba(250, 250, 251, 0.16), 5%); }
.unlock-dialog-notifications-container .message StButton:checked,
@ -390,7 +390,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .web-login-intro-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-button:checked,
+ .unlock-dialog .web-login-prompt-button:checked, .unlock-dialog .login-dialog-auth-list-title:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
color: #fafafb;
background-color: st-lighten(st-mix(#fafafb, #36363a, 9%), 8%); }
@ -405,7 +405,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .web-login-intro-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-button:checked:hover,
+ .unlock-dialog .web-login-prompt-button:checked:hover, .unlock-dialog .login-dialog-auth-list-title:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
background-color: st-lighten(st-lighten(st-mix(#fafafb, #36363a, 9%), 8%), 4%); }
.unlock-dialog-notifications-container .message StButton:checked:active,
@ -420,7 +420,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .web-login-intro-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-button:checked:active,
+ .unlock-dialog .web-login-prompt-button:checked:active, .unlock-dialog .login-dialog-auth-list-title:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
background-color: st-lighten(st-lighten(st-mix(#fafafb, #36363a, 9%), 8%), 9%); }
.unlock-dialog-notifications-container .message StButton:insensitive,
@ -435,7 +435,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog .login-dialog-button.switch-user-button:insensitive,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .web-login-intro-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-button:insensitive,
+ .unlock-dialog .web-login-prompt-button:insensitive, .unlock-dialog .login-dialog-auth-list-title:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
color: st-transparentize(#fafafb, 0.5);
- background-color: st-darken(st-mix(#fafafb, #36363a, 9%), 3%); }
@ -567,20 +567,18 @@ index 82e68c5..e112db8 100644
.login-dialog,
.unlock-dialog {
color: #fafafb; }
@@ -3042,21 +3090,88 @@ StScrollBar {
@@ -3042,21 +3090,86 @@ StScrollBar {
color: #fafafb; }
.login-dialog .login-dialog-prompt-layout,
.unlock-dialog .login-dialog-prompt-layout {
- width: 25em;
+ width: 30em;
+ margin-top: 80px; }
+ margin-top: 80px;
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-layout.web-login-active,
+ .unlock-dialog .login-dialog-prompt-layout.web-login-active {
+ width: 37.5em;
+ margin-top: 0; }
+ .login-dialog .login-dialog-input-well,
+ .unlock-dialog .login-dialog-input-well {
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-entry-area,
+ .unlock-dialog .login-dialog-prompt-entry-area {
+ margin: 0.5em 20px; }
@ -627,19 +625,19 @@ index 82e68c5..e112db8 100644
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section-label {
+ font-size: 0.909em;
+ font-weight: bold;
+ color: #fafafb; }
+ color: #ffffff; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-icon {
+ color: #fafafb;
+ color: #ffffff;
+ icon-size: 1.091em;
+ margin-right: 8px; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box {
+ spacing: 3px; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-name {
+ color: #fafafb;
+ color: #ffffff;
+ font-size: 1em;
+ font-weight: bold; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-description {
+ color: #fafafb;
+ color: #ffffff;
+ font-size: 0.909em; }
+
+.login-dialog-auth-menu-button-indicator {
@ -660,7 +658,7 @@ index 82e68c5..e112db8 100644
.conflicting-session-dialog-content {
spacing: 20px; }
@@ -3118,49 +3233,104 @@ StScrollBar {
@@ -3118,49 +3231,106 @@ StScrollBar {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-lighten(#222226, 9%), 5%); }
.login-dialog-auth-list-view {
@ -732,6 +730,8 @@ index 82e68c5..e112db8 100644
+ padding: 9px;
+ margin-bottom: 4px;
+ margin-right: 4px; }
+ .login-dialog .login-dialog-auth-list-item.compact {
+ min-height: 1.3em; }
.unlock-dialog .login-dialog-auth-list-item {
- border-radius: 9.6px;
@ -751,10 +751,7 @@ index 82e68c5..e112db8 100644
+.login-dialog-auth-list-title-label {
+ padding: 6px;
+ text-align: center; }
-.login-dialog-auth-list-label:ltr {
- padding-left: 15px;
- text-align: left; }
+
+.login-dialog-auth-list-item-title,
+.login-dialog-auth-list-item-subtitle {
+ text-align: center;
@ -762,7 +759,10 @@ index 82e68c5..e112db8 100644
+
+.login-dialog-auth-list-item-title {
+ color: #fafafb; }
+
-.login-dialog-auth-list-label:ltr {
- padding-left: 15px;
- text-align: left; }
+.login-dialog-auth-list-item-subtitle {
+ color: #c1c1ce;
+ font-weight: 500; }
@ -801,7 +801,7 @@ index 82e68c5..e112db8 100644
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .user-icon {
border: 2px solid transparent; }
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .login-dialog-timed-login-indicator {
@@ -3200,6 +3373,104 @@ StScrollBar {
@@ -3200,6 +3373,107 @@ StScrollBar {
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item:logged-in .user-icon StIcon {
background-color: st-transparentize(-st-accent-color, 0.7); }
@ -840,63 +840,66 @@ index 82e68c5..e112db8 100644
+ padding-right: 27px;
+ spacing: 1.75em; }
+
+.web-login-button-label {
+ font-size: 1.182em;
+ color: #fafafb;
+ min-width: 12em;
+ text-align: center;
+ font-weight: bold; }
+
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button {
+ color: #fafafb;
+ background-color: st-mix(#fafafb, #222226, 9%);
+ font-size: 1.182em;
+ color: #fafafb;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+ .login-dialog .web-login-intro-button:selected, .login-dialog .web-login-intro-button:focus,
+ .login-dialog .login-button:selected, .login-dialog .login-button:focus,
+ .login-dialog .web-login-prompt-button:selected,
+ .login-dialog .web-login-prompt-button:focus {
+ color: #fafafb;
+ box-shadow: inset 0 0 0 2px st-transparentize(st-mix(-st-accent-color, #ffffff, 60%), 0.2) !important;
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(#fafafb, #222226, 9%), 5%); }
+ .login-dialog .web-login-intro-button:selected:hover, .login-dialog .web-login-intro-button:focus:hover,
+ .login-dialog .login-button:selected:hover, .login-dialog .login-button:focus:hover,
+ .login-dialog .web-login-prompt-button:selected:hover,
+ .login-dialog .web-login-prompt-button:focus:hover {
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-lighten(st-mix(#fafafb, #222226, 9%), 4%), 5%); }
+ .login-dialog .web-login-intro-button:hover,
+ .login-dialog .login-button:hover,
+ .login-dialog .web-login-prompt-button:hover {
+ color: #fafafb;
+ background-color: st-lighten(st-mix(#fafafb, #222226, 9%), 4%); }
+ .login-dialog .web-login-intro-button:active,
+ .login-dialog .login-button:active,
+ .login-dialog .web-login-prompt-button:active {
+ color: #fafafb;
+ background-color: st-lighten(st-mix(#fafafb, #222226, 9%), 9%); }
+ .login-dialog .web-login-intro-button:active:hover,
+ .login-dialog .login-button:active:hover,
+ .login-dialog .web-login-prompt-button:active:hover {
+ background-color: st-lighten(st-lighten(st-mix(#fafafb, #222226, 9%), 9%), 4%); }
+ .login-dialog .web-login-intro-button:active:focus,
+ .login-dialog .login-button:active:focus,
+ .login-dialog .web-login-prompt-button:active:focus {
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-lighten(st-mix(#fafafb, #222226, 9%), 9%), 5%); }
+ .login-dialog .web-login-intro-button:insensitive,
+ .login-dialog .login-button:insensitive,
+ .login-dialog .web-login-prompt-button:insensitive {
+ color: st-transparentize(#fafafb, 0.5);
+ background-color: st-darken(st-mix(#fafafb, #222226, 9%), 3%); }
+
+.login-dialog .web-login-intro-button {
+.login-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.login-dialog .web-login-prompt-button {
+ padding: 15px 24px;
+ margin: 24px 8px;
+ width: 8em; }
+
+.unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button {
+ font-size: 1.182em;
+ color: #fafafb;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+
+.unlock-dialog .web-login-intro-button {
+.unlock-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.unlock-dialog .web-login-prompt-button {
+ padding: 15px 24px;
@ -906,7 +909,7 @@ index 82e68c5..e112db8 100644
.unlock-dialog {
background-color: transparent; }
@@ -3212,7 +3483,8 @@ StScrollBar {
@@ -3212,7 +3486,8 @@ StScrollBar {
.unlock-dialog-clock {
color: #fafafb;
@ -917,7 +920,7 @@ index 82e68c5..e112db8 100644
font-size: 6.546em;
font-weight: 800; }
diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css
index b69823f..bc41454 100644
index b69823f..9dcb6f8 100644
--- a/data/theme/gnome-shell-high-contrast.css
+++ b/data/theme/gnome-shell-high-contrast.css
@@ -42,7 +42,9 @@ stage {
@ -925,7 +928,7 @@ index b69823f..bc41454 100644
transition-duration: 100ms; }
-.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button, .login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-title,
+.login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
.unlock-dialog-notifications-container .unlock-dialog-notification-source StButton, .unlock-dialog .button,
@ -937,7 +940,7 @@ index b69823f..bc41454 100644
.message .message-header .unlock-dialog .message-close-button,
-.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
-#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
+#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.next-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-auth-menu-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
.message .message-header .message-close-button, .message-notification-group .message-collapse-button, .calendar .calendar-month-header .pager-button, .button {
@ -1240,7 +1243,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button,
-.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-dialog-auth-list-item {
+.unlock-dialog .login-dialog-button.login-dialog-auth-menu-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: #ffffff;
@ -1255,7 +1258,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .web-login-intro-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-button:focus,
+ .unlock-dialog .web-login-prompt-button:focus, .unlock-dialog .login-dialog-auth-list-title:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: #ffffff;
@ -1270,7 +1273,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .web-login-intro-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-button:focus:hover,
+ .unlock-dialog .web-login-prompt-button:focus:hover, .unlock-dialog .login-dialog-auth-list-title:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(rgba(255, 255, 255, 0.13), #ffffff, 87%), 5%); }
.unlock-dialog-notifications-container .message StButton:hover,
@ -1285,7 +1288,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .web-login-intro-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-button:hover,
+ .unlock-dialog .web-login-prompt-button:hover, .unlock-dialog .login-dialog-auth-list-title:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: #ffffff;
@ -1300,7 +1303,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-dialog-auth-list-item:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .web-login-intro-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-button:active,
+ .unlock-dialog .web-login-prompt-button:active, .unlock-dialog .login-dialog-auth-list-title:active, .unlock-dialog .login-dialog-auth-list-item:active {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: #ffffff;
@ -1315,7 +1318,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .web-login-intro-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-button:active:hover,
+ .unlock-dialog .web-login-prompt-button:active:hover, .unlock-dialog .login-dialog-auth-list-title:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
background-color: rgba(255, 255, 255, 0.19); }
.unlock-dialog-notifications-container .message StButton:active:focus,
@ -1330,7 +1333,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .web-login-intro-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-button:active:focus,
+ .unlock-dialog .web-login-prompt-button:active:focus, .unlock-dialog .login-dialog-auth-list-title:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(rgba(255, 255, 255, 0.16), #ffffff, 87%), 5%); }
.unlock-dialog-notifications-container .message StButton:checked,
@ -1345,7 +1348,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .web-login-intro-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-button:checked,
+ .unlock-dialog .web-login-prompt-button:checked, .unlock-dialog .login-dialog-auth-list-title:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: #ffffff;
@ -1360,7 +1363,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .web-login-intro-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-button:checked:hover,
+ .unlock-dialog .web-login-prompt-button:checked:hover, .unlock-dialog .login-dialog-auth-list-title:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
background-color: st-lighten(st-lighten(st-mix(#ffffff, #1a1a1a, 9%), 8%), 4%); }
.unlock-dialog-notifications-container .message StButton:checked:active,
@ -1375,7 +1378,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .web-login-intro-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-button:checked:active,
+ .unlock-dialog .web-login-prompt-button:checked:active, .unlock-dialog .login-dialog-auth-list-title:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
background-color: st-lighten(st-lighten(st-mix(#ffffff, #1a1a1a, 9%), 8%), 9%); }
.unlock-dialog-notifications-container .message StButton:insensitive,
@ -1390,7 +1393,7 @@ index b69823f..bc41454 100644
.unlock-dialog .login-dialog-button.switch-user-button:insensitive,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .web-login-intro-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-button:insensitive,
+ .unlock-dialog .web-login-prompt-button:insensitive, .unlock-dialog .login-dialog-auth-list-title:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
color: st-transparentize(#ffffff, 0.5);
@ -1526,20 +1529,18 @@ index b69823f..bc41454 100644
.login-dialog,
.unlock-dialog {
color: #ffffff; }
@@ -3372,21 +3420,88 @@ StScrollBar {
@@ -3372,21 +3420,86 @@ StScrollBar {
color: #ffffff; }
.login-dialog .login-dialog-prompt-layout,
.unlock-dialog .login-dialog-prompt-layout {
- width: 25em;
+ width: 30em;
+ margin-top: 80px; }
+ margin-top: 80px;
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-layout.web-login-active,
+ .unlock-dialog .login-dialog-prompt-layout.web-login-active {
+ width: 37.5em;
+ margin-top: 0; }
+ .login-dialog .login-dialog-input-well,
+ .unlock-dialog .login-dialog-input-well {
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-entry-area,
+ .unlock-dialog .login-dialog-prompt-entry-area {
+ margin: 0.5em 20px; }
@ -1619,7 +1620,7 @@ index b69823f..bc41454 100644
.conflicting-session-dialog-content {
spacing: 20px; }
@@ -3455,53 +3570,112 @@ StScrollBar {
@@ -3455,53 +3568,114 @@ StScrollBar {
background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(st-lighten(#000000, 9%), #ffffff, 87%), 5%); }
.login-dialog-auth-list-view {
@ -1699,6 +1700,8 @@ index b69823f..bc41454 100644
+ padding: 9px;
+ margin-bottom: 4px;
+ margin-right: 4px; }
+ .login-dialog .login-dialog-auth-list-item.compact {
+ min-height: 1.3em; }
.unlock-dialog .login-dialog-auth-list-item {
- border-radius: 9.6px;
@ -1772,7 +1775,7 @@ index b69823f..bc41454 100644
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .user-icon {
border: 2px solid transparent; }
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .login-dialog-timed-login-indicator {
@@ -3545,6 +3726,112 @@ StScrollBar {
@@ -3545,6 +3726,115 @@ StScrollBar {
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item:logged-in .user-icon StIcon {
background-color: st-transparentize(-st-accent-color, 0.7); }
@ -1811,47 +1814,44 @@ index b69823f..bc41454 100644
+ padding-right: 27px;
+ spacing: 1.75em; }
+
+.web-login-button-label {
+ font-size: 1.182em;
+ color: #ffffff;
+ min-width: 12em;
+ text-align: center;
+ font-weight: bold; }
+
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button {
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
+ color: #ffffff;
+ background-color: st-mix(st-mix(#ffffff, #000000, 9%), #ffffff, 87%);
+ font-size: 1.182em;
+ color: #ffffff;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+ .login-dialog .web-login-intro-button:selected, .login-dialog .web-login-intro-button:focus,
+ .login-dialog .login-button:selected, .login-dialog .login-button:focus,
+ .login-dialog .web-login-prompt-button:selected,
+ .login-dialog .web-login-prompt-button:focus {
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
+ color: #ffffff;
+ box-shadow: inset 0 0 0 2px st-transparentize(st-mix(-st-accent-color, #ffffff, 60%), 0.1) !important;
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(st-mix(#ffffff, #000000, 9%), #ffffff, 87%), 5%); }
+ .login-dialog .web-login-intro-button:selected:hover, .login-dialog .web-login-intro-button:focus:hover,
+ .login-dialog .login-button:selected:hover, .login-dialog .login-button:focus:hover,
+ .login-dialog .web-login-prompt-button:selected:hover,
+ .login-dialog .web-login-prompt-button:focus:hover {
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(st-lighten(st-mix(#ffffff, #000000, 9%), 4%), #ffffff, 87%), 5%); }
+ .login-dialog .web-login-intro-button:hover,
+ .login-dialog .login-button:hover,
+ .login-dialog .web-login-prompt-button:hover {
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
+ color: #ffffff;
+ background-color: st-mix(st-lighten(st-mix(#ffffff, #000000, 9%), 4%), #ffffff, 87%); }
+ .login-dialog .web-login-intro-button:active,
+ .login-dialog .login-button:active,
+ .login-dialog .web-login-prompt-button:active {
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
+ color: #ffffff;
+ background-color: st-mix(st-lighten(st-mix(#ffffff, #000000, 9%), 9%), #ffffff, 87%); }
+ .login-dialog .web-login-intro-button:active:hover,
+ .login-dialog .login-button:active:hover,
+ .login-dialog .web-login-prompt-button:active:hover {
+ background-color: st-lighten(st-lighten(st-mix(#ffffff, #000000, 9%), 9%), 4%); }
+ .login-dialog .web-login-intro-button:active:focus,
+ .login-dialog .login-button:active:focus,
+ .login-dialog .web-login-prompt-button:active:focus {
+ background-color: st-mix(st-mix(-st-accent-color, #ffffff, 60%), st-mix(st-lighten(st-mix(#ffffff, #000000, 9%), 9%), #ffffff, 87%), 5%); }
+ .login-dialog .web-login-intro-button:insensitive,
+ .login-dialog .login-button:insensitive,
+ .login-dialog .web-login-prompt-button:insensitive {
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
+ color: st-transparentize(#ffffff, 0.5);
@ -1860,22 +1860,28 @@ index b69823f..bc41454 100644
+ box-shadow: none;
+ border: none; }
+
+.login-dialog .web-login-intro-button {
+.login-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.login-dialog .web-login-prompt-button {
+ padding: 15px 24px;
+ margin: 24px 8px;
+ width: 8em; }
+
+.unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button {
+ font-size: 1.182em;
+ color: #ffffff;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+
+.unlock-dialog .web-login-intro-button {
+.unlock-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.unlock-dialog .web-login-prompt-button {
+ padding: 15px 24px;
@ -1885,7 +1891,7 @@ index b69823f..bc41454 100644
.unlock-dialog {
background-color: transparent; }
@@ -3557,7 +3844,8 @@ StScrollBar {
@@ -3557,7 +3847,8 @@ StScrollBar {
.unlock-dialog-clock {
color: #ffffff;
@ -1896,7 +1902,7 @@ index b69823f..bc41454 100644
font-size: 6.546em;
font-weight: 800; }
diff --git a/data/theme/gnome-shell-light.css b/data/theme/gnome-shell-light.css
index 2b67846..c3288bb 100644
index 2b67846..d74cfb3 100644
--- a/data/theme/gnome-shell-light.css
+++ b/data/theme/gnome-shell-light.css
@@ -42,7 +42,9 @@ stage {
@ -1904,7 +1910,7 @@ index 2b67846..c3288bb 100644
transition-duration: 100ms; }
-.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button, .login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item, .login-dialog .login-dialog-auth-list-title,
+.login-dialog .login-dialog-auth-list-item, .login-dialog-not-listed-button, .unlock-dialog-notifications-container .message StButton,
.unlock-dialog-notifications-container .unlock-dialog-notification-source StButton, .unlock-dialog .button,
@ -1916,7 +1922,7 @@ index 2b67846..c3288bb 100644
.message .message-header .unlock-dialog .message-close-button,
-.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
-#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .screenshot-ui-show-pointer-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item, #LookingGlassDialog .notebook-tab, .screenshot-ui-show-pointer-button, .screenshot-ui-type-button, #LookingGlassDebugFlags .lg-debug-flag-button, #LookingGlassPropertyInspector .lg-obj-inspector-close-button,
+#LookingGlassPropertyInspector .lg-obj-inspector-button, #LookingGlassDialog > #Toolbar .lg-toolbar-button, .icon-button, .login-dialog-button.next-button, .login-dialog-button.a11y-button, .login-dialog-button.cancel-button, .login-dialog-button.switch-user-button, .login-dialog-button.login-dialog-auth-menu-button, .login-dialog-button.login-dialog-session-list-button, .message .message-header .message-expand-button,
.message .message-header .message-close-button, .message-notification-group .message-collapse-button, .calendar .calendar-month-header .pager-button, .button {
@ -2171,7 +2177,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button,
-.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-dialog-auth-list-item {
+.unlock-dialog .login-dialog-button.login-dialog-auth-menu-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-dialog-button.login-dialog-session-list-button, .unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button, .unlock-dialog .login-dialog-auth-list-title, .unlock-dialog .login-dialog-auth-list-item {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.1); }
@ -2186,7 +2192,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .web-login-intro-button:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus, .unlock-dialog .login-button:focus,
+ .unlock-dialog .web-login-prompt-button:focus, .unlock-dialog .login-dialog-auth-list-title:focus, .unlock-dialog .login-dialog-auth-list-item:focus {
color: #fafafb;
box-shadow: inset 0 0 0 2px st-transparentize(-st-accent-color, 0.2) !important;
@ -2201,7 +2207,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:focus:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .web-login-intro-button:focus:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:focus:hover, .unlock-dialog .login-button:focus:hover,
+ .unlock-dialog .web-login-prompt-button:focus:hover, .unlock-dialog .login-dialog-auth-list-title:focus:hover, .unlock-dialog .login-dialog-auth-list-item:focus:hover {
background-color: st-mix(-st-accent-color, rgba(250, 250, 251, 0.13), 5%); }
.unlock-dialog-notifications-container .message StButton:hover,
@ -2216,7 +2222,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .web-login-intro-button:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:hover, .unlock-dialog .login-button:hover,
+ .unlock-dialog .web-login-prompt-button:hover, .unlock-dialog .login-dialog-auth-list-title:hover, .unlock-dialog .login-dialog-auth-list-item:hover {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.13); }
@ -2231,7 +2237,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-dialog-auth-list-item:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .web-login-intro-button:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active, .unlock-dialog .login-button:active,
+ .unlock-dialog .web-login-prompt-button:active, .unlock-dialog .login-dialog-auth-list-title:active, .unlock-dialog .login-dialog-auth-list-item:active {
color: #fafafb;
background-color: rgba(250, 250, 251, 0.16); }
@ -2246,7 +2252,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .web-login-intro-button:active:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:hover, .unlock-dialog .login-button:active:hover,
+ .unlock-dialog .web-login-prompt-button:active:hover, .unlock-dialog .login-dialog-auth-list-title:active:hover, .unlock-dialog .login-dialog-auth-list-item:active:hover {
background-color: rgba(250, 250, 251, 0.19); }
.unlock-dialog-notifications-container .message StButton:active:focus,
@ -2261,7 +2267,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:active:focus,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .web-login-intro-button:active:focus,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:active:focus, .unlock-dialog .login-button:active:focus,
+ .unlock-dialog .web-login-prompt-button:active:focus, .unlock-dialog .login-dialog-auth-list-title:active:focus, .unlock-dialog .login-dialog-auth-list-item:active:focus {
background-color: st-mix(-st-accent-color, rgba(250, 250, 251, 0.16), 5%); }
.unlock-dialog-notifications-container .message StButton:checked,
@ -2276,7 +2282,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .web-login-intro-button:checked,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked, .unlock-dialog .login-button:checked,
+ .unlock-dialog .web-login-prompt-button:checked, .unlock-dialog .login-dialog-auth-list-title:checked, .unlock-dialog .login-dialog-auth-list-item:checked {
color: #fafafb;
background-color: st-darken(st-mix(#fafafb, #fafafb, 12%), 8%); }
@ -2291,7 +2297,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:hover,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .web-login-intro-button:checked:hover,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:hover, .unlock-dialog .login-button:checked:hover,
+ .unlock-dialog .web-login-prompt-button:checked:hover, .unlock-dialog .login-dialog-auth-list-title:checked:hover, .unlock-dialog .login-dialog-auth-list-item:checked:hover {
background-color: st-darken(st-darken(st-mix(#fafafb, #fafafb, 12%), 8%), 4%); }
.unlock-dialog-notifications-container .message StButton:checked:active,
@ -2306,7 +2312,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:checked:active,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .web-login-intro-button:checked:active,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:checked:active, .unlock-dialog .login-button:checked:active,
+ .unlock-dialog .web-login-prompt-button:checked:active, .unlock-dialog .login-dialog-auth-list-title:checked:active, .unlock-dialog .login-dialog-auth-list-item:checked:active {
background-color: st-darken(st-darken(st-mix(#fafafb, #fafafb, 12%), 8%), 9%); }
.unlock-dialog-notifications-container .message StButton:insensitive,
@ -2321,7 +2327,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog .login-dialog-button.switch-user-button:insensitive,
- .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
+ .unlock-dialog .login-dialog-button.login-dialog-auth-menu-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .web-login-intro-button:insensitive,
+ .unlock-dialog .login-dialog-button.login-dialog-session-list-button:insensitive, .unlock-dialog .login-button:insensitive,
+ .unlock-dialog .web-login-prompt-button:insensitive, .unlock-dialog .login-dialog-auth-list-title:insensitive, .unlock-dialog .login-dialog-auth-list-item:insensitive {
color: st-transparentize(#fafafb, 0.6);
- background-color: st-lighten(st-mix(#fafafb, #fafafb, 12%), 3%); }
@ -2439,7 +2445,7 @@ index 2b67846..c3288bb 100644
.app-folder-dialog .message .message-header .message-close-button:active:focus,
.message .message-header .app-folder-dialog .message-close-button:active:focus, .app-folder-dialog .screenshot-ui-show-pointer-button:active:focus {
background-color: st-mix(-st-accent-color, st-lighten(st-mix(#fafafb, #38383b, 12%), 9%), 5%); }
@@ -3033,6 +3074,12 @@ StScrollBar {
@@ -3033,6 +3074,13 @@ StScrollBar {
background-color: st-lighten(-st-accent-color, 5%);
color: st-lighten(-st-accent-fg-color, 5%); }
@ -2447,25 +2453,24 @@ index 2b67846..c3288bb 100644
+ border-radius: 4px;
+ border-width: 1em;
+ background-color: #e9e9ea;
+ border-color: #e9e9ea; }
+ border-color: #e9e9ea;
+ color: #222226; }
+
.login-dialog,
.unlock-dialog {
color: #fafafb; }
@@ -3043,21 +3090,88 @@ StScrollBar {
@@ -3043,21 +3091,86 @@ StScrollBar {
color: #fafafb; }
.login-dialog .login-dialog-prompt-layout,
.unlock-dialog .login-dialog-prompt-layout {
- width: 25em;
+ width: 30em;
+ margin-top: 80px; }
+ margin-top: 80px;
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-layout.web-login-active,
+ .unlock-dialog .login-dialog-prompt-layout.web-login-active {
+ width: 37.5em;
+ margin-top: 0; }
+ .login-dialog .login-dialog-input-well,
+ .unlock-dialog .login-dialog-input-well {
spacing: 9px; }
+ .login-dialog .login-dialog-prompt-entry-area,
+ .unlock-dialog .login-dialog-prompt-entry-area {
+ margin: 0.5em 20px; }
@ -2512,19 +2517,19 @@ index 2b67846..c3288bb 100644
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section-label {
+ font-size: 0.909em;
+ font-weight: bold;
+ color: #fafafb; }
+ color: #222226; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-icon {
+ color: #fafafb;
+ color: #222226;
+ icon-size: 1.091em;
+ margin-right: 8px; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box {
+ spacing: 3px; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-name {
+ color: #fafafb;
+ color: #222226;
+ font-size: 1em;
+ font-weight: bold; }
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-description {
+ color: #fafafb;
+ color: #222226;
+ font-size: 0.909em; }
+
+.login-dialog-auth-menu-button-indicator {
@ -2545,7 +2550,7 @@ index 2b67846..c3288bb 100644
.conflicting-session-dialog-content {
spacing: 20px; }
@@ -3119,49 +3233,104 @@ StScrollBar {
@@ -3119,49 +3232,106 @@ StScrollBar {
background-color: st-mix(-st-accent-color, st-lighten(#222226, 9%), 5%); }
.login-dialog-auth-list-view {
@ -2617,6 +2622,8 @@ index 2b67846..c3288bb 100644
+ padding: 9px;
+ margin-bottom: 4px;
+ margin-right: 4px; }
+ .login-dialog .login-dialog-auth-list-item.compact {
+ min-height: 1.3em; }
.unlock-dialog .login-dialog-auth-list-item {
- border-radius: 9.6px;
@ -2626,19 +2633,13 @@ index 2b67846..c3288bb 100644
+ padding: 9px;
+ margin-bottom: 4px;
+ margin-right: 4px; }
-.login-dialog-auth-list-label:ltr {
- padding-left: 15px;
- text-align: left; }
+
+.unlock-dialog .login-dialog-auth-list-title {
+ background-color: transparent !important;
+ color: #fafafb !important;
+ padding: 0;
+ margin: 0; }
-.login-dialog-auth-list-label:rtl {
- padding-right: 15px;
- text-align: right; }
+
+.login-dialog-auth-list-title-label {
+ padding: 6px;
+ text-align: center; }
@ -2650,11 +2651,17 @@ index 2b67846..c3288bb 100644
+
+.login-dialog-auth-list-item-title {
+ color: #fafafb; }
+
-.login-dialog-auth-list-label:ltr {
- padding-left: 15px;
- text-align: left; }
+.login-dialog-auth-list-item-subtitle {
+ color: #c1c1ce;
+ font-weight: 500; }
+
-.login-dialog-auth-list-label:rtl {
- padding-right: 15px;
- text-align: right; }
+.login-dialog-item-icon {
+ width: 1.3em;
+ height: 1.3em;
@ -2676,7 +2683,7 @@ index 2b67846..c3288bb 100644
.login-dialog-user-list-view {
width: 25em;
@@ -3190,6 +3359,9 @@ StScrollBar {
@@ -3190,6 +3360,9 @@ StScrollBar {
background-color: st-lighten(st-lighten(st-mix(#fafafb, #222226, 12%), 9%), 4%); }
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item:active:focus {
background-color: st-mix(-st-accent-color, st-lighten(st-mix(#fafafb, #222226, 12%), 9%), 5%); }
@ -2686,7 +2693,7 @@ index 2b67846..c3288bb 100644
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .user-icon {
border: 2px solid transparent; }
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item .login-dialog-timed-login-indicator {
@@ -3201,6 +3373,104 @@ StScrollBar {
@@ -3201,6 +3374,107 @@ StScrollBar {
.login-dialog-user-list-view .login-dialog-user-list .login-dialog-user-list-item:logged-in .user-icon StIcon {
background-color: st-transparentize(-st-accent-color, 0.7); }
@ -2725,63 +2732,66 @@ index 2b67846..c3288bb 100644
+ padding-right: 27px;
+ spacing: 1.75em; }
+
+.web-login-button-label {
+ font-size: 1.182em;
+ color: #fafafb;
+ min-width: 12em;
+ text-align: center;
+ font-weight: bold; }
+
+.login-dialog .web-login-intro-button,
+.login-dialog .login-button,
+.login-dialog .web-login-prompt-button {
+ color: #fafafb;
+ background-color: st-mix(#fafafb, #222226, 12%);
+ font-size: 1.182em;
+ color: #fafafb;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+ .login-dialog .web-login-intro-button:selected, .login-dialog .web-login-intro-button:focus,
+ .login-dialog .login-button:selected, .login-dialog .login-button:focus,
+ .login-dialog .web-login-prompt-button:selected,
+ .login-dialog .web-login-prompt-button:focus {
+ color: #fafafb;
+ box-shadow: inset 0 0 0 2px st-transparentize(-st-accent-color, 0.2) !important;
+ background-color: st-mix(-st-accent-color, st-mix(#fafafb, #222226, 12%), 5%); }
+ .login-dialog .web-login-intro-button:selected:hover, .login-dialog .web-login-intro-button:focus:hover,
+ .login-dialog .login-button:selected:hover, .login-dialog .login-button:focus:hover,
+ .login-dialog .web-login-prompt-button:selected:hover,
+ .login-dialog .web-login-prompt-button:focus:hover {
+ background-color: st-mix(-st-accent-color, st-lighten(st-mix(#fafafb, #222226, 12%), 4%), 5%); }
+ .login-dialog .web-login-intro-button:hover,
+ .login-dialog .login-button:hover,
+ .login-dialog .web-login-prompt-button:hover {
+ color: #fafafb;
+ background-color: st-lighten(st-mix(#fafafb, #222226, 12%), 4%); }
+ .login-dialog .web-login-intro-button:active,
+ .login-dialog .login-button:active,
+ .login-dialog .web-login-prompt-button:active {
+ color: #fafafb;
+ background-color: st-lighten(st-mix(#fafafb, #222226, 12%), 9%); }
+ .login-dialog .web-login-intro-button:active:hover,
+ .login-dialog .login-button:active:hover,
+ .login-dialog .web-login-prompt-button:active:hover {
+ background-color: st-lighten(st-lighten(st-mix(#fafafb, #222226, 12%), 9%), 4%); }
+ .login-dialog .web-login-intro-button:active:focus,
+ .login-dialog .login-button:active:focus,
+ .login-dialog .web-login-prompt-button:active:focus {
+ background-color: st-mix(-st-accent-color, st-lighten(st-mix(#fafafb, #222226, 12%), 9%), 5%); }
+ .login-dialog .web-login-intro-button:insensitive,
+ .login-dialog .login-button:insensitive,
+ .login-dialog .web-login-prompt-button:insensitive {
+ color: st-transparentize(#fafafb, 0.6);
+ background-color: st-darken(st-mix(#fafafb, #222226, 12%), 3%); }
+
+.login-dialog .web-login-intro-button {
+.login-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.login-dialog .web-login-prompt-button {
+ padding: 15px 24px;
+ margin: 24px 8px;
+ width: 8em; }
+
+.unlock-dialog .web-login-intro-button,
+.unlock-dialog .login-button,
+.unlock-dialog .web-login-prompt-button {
+ font-size: 1.182em;
+ color: #fafafb;
+ text-align: center;
+ font-weight: bold;
+ border-radius: 32px; }
+
+.unlock-dialog .web-login-intro-button {
+.unlock-dialog .login-button {
+ padding: 0;
+ margin: 0.2em 20px; }
+ margin: 0.2em 20px;
+ min-width: 12em; }
+
+.unlock-dialog .web-login-prompt-button {
+ padding: 15px 24px;
@ -2791,7 +2801,7 @@ index 2b67846..c3288bb 100644
.unlock-dialog {
background-color: transparent; }
@@ -3213,7 +3483,8 @@ StScrollBar {
@@ -3213,7 +3487,8 @@ StScrollBar {
.unlock-dialog-clock {
color: #fafafb;
@ -2802,5 +2812,5 @@ index 2b67846..c3288bb 100644
font-size: 6.546em;
font-weight: 800; }
--
2.54.0
2.52.0

View File

@ -1,96 +0,0 @@
From 5293ee585f876169e31f3b6af737a42d30302f71 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg@redhat.com>
Date: Wed, 28 Apr 2021 16:50:03 +0200
Subject: [PATCH] gdm: Work around failing fingerprint auth
On Fedora we have the problem that fingerprint auth fails immediately if
the PAM configuration has not been updated and no prints are enrolled.
So, consider a verification failure within one second to be a service
failure instead.
---
js/gdm/authServicesLegacy.js | 47 ++++++++++++++++++++++++------------
1 file changed, 32 insertions(+), 15 deletions(-)
diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js
index 7b5739f14..99c034f64 100644
--- a/js/gdm/authServicesLegacy.js
+++ b/js/gdm/authServicesLegacy.js
@@ -57,6 +57,7 @@ export class AuthServicesLegacy extends AuthServices {
this.addCredentialManager(Vmware.SERVICE_NAME, Vmware.getVmwareCredentialsManager());
this._fingerprintReadyTimeoutId = 0;
+ this._fprintStartTime = -1;
}
_handleSelectChoice(serviceName, key) {
@@ -114,18 +115,21 @@ export class AuthServicesLegacy extends AuthServices {
}
_handleOnConversationStarted(serviceName) {
- if (serviceName !== Constants.FINGERPRINT_SERVICE_NAME ||
- this._fingerprintReadyTimeoutId !== 0)
- return;
-
- this._fingerprintReadyTimeoutId = GLib.timeout_add(
- GLib.PRIORITY_DEFAULT,
- FINGERPRINT_READY_TIMEOUT_MS,
- () => {
- this._fingerprintReadyTimeoutId = 0;
- this._setFingerprintReady(true);
- return GLib.SOURCE_REMOVE;
- });
+ if (serviceName === Constants.FINGERPRINT_SERVICE_NAME) {
+ this._fprintStartTime = GLib.get_monotonic_time();
+
+
+ if (this._fingerprintReadyTimeoutId === 0) {
+ this._fingerprintReadyTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT,
+ FINGERPRINT_READY_TIMEOUT_MS,
+ () => {
+ this._fingerprintReadyTimeoutId = 0;
+ this._setFingerprintReady(true);
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ }
}
_setFingerprintReady(ready) {
@@ -231,6 +235,7 @@ export class AuthServicesLegacy extends AuthServices {
this._fingerprintFailedId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
FINGERPRINT_ERROR_TIMEOUT_WAIT, () => {
+ log("Generating _verificationFailed!");
this._fingerprintFailedId = 0;
if (!this._cancellable.is_cancelled())
this._verificationFailed(serviceName, false);
@@ -312,9 +317,21 @@ export class AuthServicesLegacy extends AuthServices {
_handleVerificationFailed(serviceName) {
if (serviceName === Constants.FINGERPRINT_SERVICE_NAME &&
- this._enabledMechanisms.some(m => m.serviceName === serviceName) &&
- this._fingerprintFailedId)
- GLib.source_remove(this._fingerprintFailedId);
+ this._enabledMechanisms.some(m => m.serviceName === serviceName)) {
+ if (this._fingerprintFailedId)
+ GLib.source_remove(this._fingerprintFailedId);
+
+ // On Fedora we have the problem that fingerprint auth fails
+ // immediately if the PAM configuration has not been updated and no
+ // prints are enrolled.
+ // So, consider a verification failure within one second to be a service
+ // failure instead.
+ if (this._fprintStartTime > GLib.get_monotonic_time() - GLib.USEC_PER_SEC) {
+ log("Fingerprint service failed almost immediately, considering it unavailable.");
+ log("Please fix your configuration by running: authselect select --force sssd with-fingerprint with-silent-lastlog");
+ this._onServiceUnavailable(serviceName, null);
+ }
+ }
}
_handleOnVerificationComplete(serviceName) {
--
2.54.0

View File

@ -1,163 +0,0 @@
From 5b24694b73b58a77db1e017d2c97bfc673236572 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 2 Jun 2026 11:43:10 +0200
Subject: [PATCH] Change inputWell by this
In this version inputWell doesn't exist yet.
---
js/gdm/authPrompt.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index e511b3881..3f2765f9c 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -196,7 +196,7 @@ export const AuthPrompt = GObject.registerClass({
},
});
});
- this._inputWell.add_child(this._authList);
+ this.add_child(this._authList);
// Use an insensitive button for the auth list title
// to get the same style as the auth list buttons
@@ -315,7 +315,7 @@ export const AuthPrompt = GObject.registerClass({
}
});
this._webLoginDialog.connect('loading', () => this.emit('loading', this._webLoginDialog.isLoading));
- this._inputWell.add_child(this._webLoginDialog);
+ this.add_child(this._webLoginDialog);
// center elements inside _mainBox between the cancel
// button on the left and this spacer on the right
--
2.54.0
From 848071303afba7aa58486b643e5631a0d75d40b9 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 2 Jun 2026 12:07:45 +0200
Subject: [PATCH] Use Object.keys(this._sections) instead of
this._sections.keys()
---
js/gdm/authMenuButton.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/gdm/authMenuButton.js b/js/gdm/authMenuButton.js
index cbc1d7676..6a697cbc2 100644
--- a/js/gdm/authMenuButton.js
+++ b/js/gdm/authMenuButton.js
@@ -252,7 +252,7 @@ export class AuthMenuButton extends St.Button {
this._items.delete(itemKey);
});
- this._sections.keys().forEach(sectionName => {
+ Object.keys(this._sections).forEach(sectionName => {
const itemsInSection = this._findItems({sectionName});
if (itemsInSection.length === 0) {
const section = this._sections.get(sectionName);
--
2.54.0
From 8a987a7b32a1e3edbb04f9a9ff3077fac7d6a151 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 2 Jun 2026 12:52:09 +0200
Subject: [PATCH] Don't use _once timeout variants
---
js/gdm/authServices.js | 7 +++++--
js/gdm/authServicesLegacy.js | 3 ++-
js/gdm/authServicesSSSDSwitchable.js | 3 ++-
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js
index 2726d960a..410f0bc16 100644
--- a/js/gdm/authServices.js
+++ b/js/gdm/authServices.js
@@ -260,8 +260,11 @@ export class AuthServices extends GObject.Object {
_waitPendingMessages() {
const cancellable = this._cancellable;
- const timeoutId = GLib.timeout_add_seconds_once(GLib.PRIORITY_DEFAULT, 10,
- () => cancellable.cancel());
+ const timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 10,
+ () => {
+ cancellable.cancel();
+ return GLib.SOURCE_REMOVE;
+ });
const {promise, resolve, reject} = Promise.withResolvers();
const task = Gio.Task.new(this, cancellable, () => {
diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js
index 132c5307c..7b5739f14 100644
--- a/js/gdm/authServicesLegacy.js
+++ b/js/gdm/authServicesLegacy.js
@@ -118,12 +118,13 @@ export class AuthServicesLegacy extends AuthServices {
this._fingerprintReadyTimeoutId !== 0)
return;
- this._fingerprintReadyTimeoutId = GLib.timeout_add_once(
+ this._fingerprintReadyTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
FINGERPRINT_READY_TIMEOUT_MS,
() => {
this._fingerprintReadyTimeoutId = 0;
this._setFingerprintReady(true);
+ return GLib.SOURCE_REMOVE;
});
}
diff --git a/js/gdm/authServicesSSSDSwitchable.js b/js/gdm/authServicesSSSDSwitchable.js
index 4c8eb1ae1..f98c86e09 100644
--- a/js/gdm/authServicesSSSDSwitchable.js
+++ b/js/gdm/authServicesSSSDSwitchable.js
@@ -197,7 +197,7 @@ export class AuthServicesSSSDSwitchable extends AuthServices {
if (!timeout)
return;
- this._webLoginTimeoutId = GLib.timeout_add_seconds_once(GLib.PRIORITY_DEFAULT,
+ this._webLoginTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
timeout, () => {
if (this._selectedMechanism?.role !== Constants.WEB_LOGIN_ROLE_NAME)
webLoginMechanism.needsRefresh = true;
@@ -205,6 +205,7 @@ export class AuthServicesSSSDSwitchable extends AuthServices {
this.emit('reset', {softReset: true});
this._webLoginTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
});
}
--
2.54.0
From 0198f88dc153e80041ab32fb20f6294e1440a77d Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 9 Jun 2026 09:57:09 +0200
Subject: [PATCH] authServices: Use alternative to Promise.withResolvers()
It doesn't exist in this version
---
js/gdm/authServices.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js
index 410f0bc16..fbea348fe 100644
--- a/js/gdm/authServices.js
+++ b/js/gdm/authServices.js
@@ -266,7 +266,11 @@ export class AuthServices extends GObject.Object {
return GLib.SOURCE_REMOVE;
});
- const {promise, resolve, reject} = Promise.withResolvers();
+ let resolve, reject;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ reject = rej;
+ });
const task = Gio.Task.new(this, cancellable, () => {
try {
const res = task.propagate_boolean();
--
2.54.0

View File

@ -40,12 +40,9 @@ Patch: disable-unlock-entry-until-question.patch
Patch: 0001-main-Register-session-with-GDM-on-startup.patch
Patch: 0001-loginManager-Update-RegisterSession.patch
# Passwordless work
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3212
Patch: pre-changes-for-passwordless-gdm-backport.patch
Patch: 0001-Support-for-web-login-and-unified-auth-mechanism.patch
Patch: 0002-post-changes-for-passwordless-gdm-backport.patch
# Some users might have a broken PAM config, so we really need this
# downstream patch to stop trying on configuration errors.
Patch: 0001-gdm-Work-around-failing-fingerprint-auth.patch
Patch: post-changes-for-passwordless-gdm-backport.patch
# Extensions
Patch: 0001-extensionDownloader-Refuse-to-override-system-extens.patch

View File

@ -0,0 +1,278 @@
From 45dd4808e26dabd03c25c126e97b22a20b4bcfa5 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 2 Jun 2026 12:07:45 +0200
Subject: [PATCH 1/5] Use Object.keys(this._sections) instead of
this._sections.keys()
---
js/gdm/authMenuButton.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/gdm/authMenuButton.js b/js/gdm/authMenuButton.js
index 5aaa45fd3..e2c516585 100644
--- a/js/gdm/authMenuButton.js
+++ b/js/gdm/authMenuButton.js
@@ -252,7 +252,7 @@ export class AuthMenuButton extends St.Button {
this._items.delete(itemKey);
});
- this._sections.keys().forEach(sectionName => {
+ Object.keys(this._sections).forEach(sectionName => {
const itemsInSection = this._findItems({sectionName});
if (itemsInSection.length === 0) {
const section = this._sections.get(sectionName);
--
2.55.0
From 2f4e4d9bff76e6b4db951890b82282cc7a01921a Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 2 Jun 2026 12:52:09 +0200
Subject: [PATCH 2/5] Don't use _once timeout variants
---
js/gdm/authServices.js | 7 +++++--
js/gdm/authServicesLegacy.js | 3 ++-
js/gdm/authServicesSSSDSwitchable.js | 3 ++-
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js
index d0f7659a5..e13d4106e 100644
--- a/js/gdm/authServices.js
+++ b/js/gdm/authServices.js
@@ -283,8 +283,11 @@ export class AuthServices extends GObject.Object {
_waitPendingMessages() {
const cancellable = this._cancellable;
- const timeoutId = GLib.timeout_add_seconds_once(GLib.PRIORITY_DEFAULT, 10,
- () => cancellable.cancel());
+ const timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 10,
+ () => {
+ cancellable.cancel();
+ return GLib.SOURCE_REMOVE;
+ });
const {promise, resolve, reject} = Promise.withResolvers();
const task = Gio.Task.new(this, cancellable, () => {
diff --git a/js/gdm/authServicesLegacy.js b/js/gdm/authServicesLegacy.js
index 77f9cece6..0e5c525de 100644
--- a/js/gdm/authServicesLegacy.js
+++ b/js/gdm/authServicesLegacy.js
@@ -132,12 +132,13 @@ export class AuthServicesLegacy extends AuthServices {
this._fingerprintReadyTimeoutId !== 0)
return;
- this._fingerprintReadyTimeoutId = GLib.timeout_add_once(
+ this._fingerprintReadyTimeoutId = GLib.timeout_add(
GLib.PRIORITY_DEFAULT,
FINGERPRINT_READY_TIMEOUT_MS,
() => {
this._fingerprintReadyTimeoutId = 0;
this._setFingerprintReady(true);
+ return GLib.SOURCE_REMOVE;
});
}
diff --git a/js/gdm/authServicesSSSDSwitchable.js b/js/gdm/authServicesSSSDSwitchable.js
index cf6a4e1fb..0271d98f2 100644
--- a/js/gdm/authServicesSSSDSwitchable.js
+++ b/js/gdm/authServicesSSSDSwitchable.js
@@ -287,7 +287,7 @@ export class AuthServicesSSSDSwitchable extends AuthServices {
if (!timeout)
return;
- this._webLoginTimeoutId = GLib.timeout_add_seconds_once(GLib.PRIORITY_DEFAULT,
+ this._webLoginTimeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT,
timeout, () => {
if (this._selectedMechanism?.role !== Role.WEB_LOGIN)
webLoginMechanism.needsRefresh = true;
@@ -295,6 +295,7 @@ export class AuthServicesSSSDSwitchable extends AuthServices {
this.emit('reset', {softReset: true});
this._webLoginTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
});
}
--
2.55.0
From 398fd1ad475e2092977cb210e12d3403bc0fdbaa Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 9 Jun 2026 09:57:09 +0200
Subject: [PATCH 3/5] gdm: Use alternative to Promise.withResolvers()
It doesn't exist in this version
---
js/gdm/authServices.js | 6 +++++-
js/gdm/userVerifier.js | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/js/gdm/authServices.js b/js/gdm/authServices.js
index e13d4106e..e5cf21c96 100644
--- a/js/gdm/authServices.js
+++ b/js/gdm/authServices.js
@@ -289,7 +289,11 @@ export class AuthServices extends GObject.Object {
return GLib.SOURCE_REMOVE;
});
- const {promise, resolve, reject} = Promise.withResolvers();
+ let resolve, reject;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ reject = rej;
+ });
const task = Gio.Task.new(this, cancellable, () => {
try {
const res = task.propagate_boolean();
diff --git a/js/gdm/userVerifier.js b/js/gdm/userVerifier.js
index 02decbf86..27777c6f1 100644
--- a/js/gdm/userVerifier.js
+++ b/js/gdm/userVerifier.js
@@ -223,7 +223,11 @@ export class ShellUserVerifier extends Signals.EventEmitter {
return;
const message = this.currentMessage;
- const {promise, resolve} = Promise.withResolvers();
+ let resolve, reject;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ reject = rej;
+ });
this._showMessageResolver = resolve;
this.emit('show-message', {
--
2.55.0
From dda52fc6a0e12af8dc3b6eca5f853923c311d837 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Thu, 6 Aug 2026 23:58:46 +0200
Subject: [PATCH 4/5] gdm: Use old ButtonMask enum
In this version it still used as ONE, TWO and THREE
---
js/gdm/authList.js | 2 +-
js/gdm/authMenuButton.js | 2 +-
js/gdm/authPrompt.js | 2 +-
js/gdm/webLogin.js | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/js/gdm/authList.js b/js/gdm/authList.js
index 81c204e7f..8e035da91 100644
--- a/js/gdm/authList.js
+++ b/js/gdm/authList.js
@@ -70,7 +70,7 @@ class ItemIcon extends St.Button {
constructor(iconName, iconTitle, iconSubtitle) {
super({
style_class: 'login-dialog-item-icon',
- button_mask: St.ButtonMask.PRIMARY | St.ButtonMask.SECONDARY,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
iconName,
});
diff --git a/js/gdm/authMenuButton.js b/js/gdm/authMenuButton.js
index e2c516585..ca9a0b9d1 100644
--- a/js/gdm/authMenuButton.js
+++ b/js/gdm/authMenuButton.js
@@ -149,7 +149,7 @@ export class AuthMenuButton extends St.Button {
style_class: 'login-dialog-button login-dialog-auth-menu-button',
can_focus: true,
accessible_role: Atk.Role.MENU,
- button_mask: St.ButtonMask.PRIMARY | St.ButtonMask.SECONDARY,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
});
this.bind_property('reactive',
this, 'can-focus',
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index 007c1538c..7e69525f9 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -291,7 +291,7 @@ export const AuthPrompt = GObject.registerClass({
this._authButton = new St.Button({
style_class: 'login-button',
- button_mask: St.ButtonMask.PRIMARY | St.ButtonMask.SECONDARY,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
can_focus: true,
x_align: Clutter.ActorAlign.CENTER,
x_expand: true,
diff --git a/js/gdm/webLogin.js b/js/gdm/webLogin.js
index 3b6496296..34c371b8d 100644
--- a/js/gdm/webLogin.js
+++ b/js/gdm/webLogin.js
@@ -200,7 +200,7 @@ export class WebLoginDialog extends St.Widget {
style_class: 'web-login-prompt-button',
can_focus: true,
accessible_name: b.label,
- button_mask: St.ButtonMask.PRIMARY | St.ButtonMask.SECONDARY,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
child: new St.Label({
text: b.label,
style_class: 'login-button-label',
--
2.55.0
From 5e3b6d53a6e34e27e6c38d517fe51cfe52b2b96e Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Fri, 7 Aug 2026 11:42:37 +0200
Subject: [PATCH 5/5] style: Fix color styles to adapt when on light-mode
(classic-mode)
---
data/theme/gnome-shell-sass/widgets/_login-lock.scss | 8 ++++----
data/theme/gnome-shell-sass/widgets/_qr-code.scss | 1 +
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/data/theme/gnome-shell-sass/widgets/_login-lock.scss b/data/theme/gnome-shell-sass/widgets/_login-lock.scss
index 04f24a789..fbcb4d20f 100644
--- a/data/theme/gnome-shell-sass/widgets/_login-lock.scss
+++ b/data/theme/gnome-shell-sass/widgets/_login-lock.scss
@@ -92,12 +92,12 @@ $_gdm_dialog_width: 25em;
&-label {
@include fontsize($base_font_size - 1);
font-weight: bold;
- color: $_gdm_fg;
+ color: $fg_color;
}
}
.login-dialog-auth-menu-item-icon {
- color: $_gdm_fg;
+ color: $fg_color;
icon-size: $scalable_icon_size;
margin-right: $base_margin * 2;
}
@@ -106,13 +106,13 @@ $_gdm_dialog_width: 25em;
spacing: $base_padding * .5;
&-name {
- color: $_gdm_fg;
+ color: $fg_color;
@include fontsize($base_font_size);
font-weight: bold;
}
&-description {
- color: $_gdm_fg;
+ color: $fg_color;
@include fontsize($base_font_size - 1);
}
}
diff --git a/data/theme/gnome-shell-sass/widgets/_qr-code.scss b/data/theme/gnome-shell-sass/widgets/_qr-code.scss
index da04425bd..98ecf7b0f 100644
--- a/data/theme/gnome-shell-sass/widgets/_qr-code.scss
+++ b/data/theme/gnome-shell-sass/widgets/_qr-code.scss
@@ -6,6 +6,7 @@
$qrcode_bg_color: mix($fg_color, $bg_color, 8%);
background-color: $qrcode_bg_color;
border-color: $qrcode_bg_color;
+ color: $fg_color;
} @else {
background-color: $system_fg_color;
border-color: $system_fg_color;
--
2.55.0

View File

@ -0,0 +1,217 @@
From 1c91eaa7fb93536a1e3e2695d856721d403171f6 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 5 May 2026 17:26:27 +0200
Subject: [PATCH 1/3] animationUtils: Skip no-op wiggle to avoid cancelling
pending transitions
When wiggle() is called with duration 0, the async easeAsync calls
yield between microtasks, leaving pending operations that remove
transitions on the same property. This becomes a problem when two
setMessage() calls happen in the same call stack (e.g. via
_queuePriorityMessage): the first fires a no-op wiggle(dur:0) and
the second starts the real wiggle(dur:65). When microtasks drain,
the first wiggle's pending easeAsync calls overwrite the second
wiggle's active transition, effectively cancelling the real animation.
Return early when duration is 0, since the animation is a no-op anyway.
Fixes: fdadbb7a5a2 ("animationUtils: Use easeAsync() for wiggle")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/9207
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4209>
---
js/misc/animationUtils.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/misc/animationUtils.js b/js/misc/animationUtils.js
index cf6889609..9d065cf78 100644
--- a/js/misc/animationUtils.js
+++ b/js/misc/animationUtils.js
@@ -84,7 +84,7 @@ export function ensureActorVisibleInScrollView(scrollView, actor) {
* @param {number} params.wiggleCount - the number of times to wiggle the actor
*/
export function wiggle(actor, params) {
- if (!St.Settings.get().enable_animations)
+ if (!St.Settings.get().enable_animations || params?.duration === 0)
return;
params = Params.parse(params, {
--
2.55.0
From b5a37cbdd89eeed44966455ba22b0f10a3f25091 Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 5 May 2026 21:32:06 +0200
Subject: [PATCH 2/3] authPrompt: Call wiggle directly in _onShowMessage
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4209>
---
js/gdm/authPrompt.js | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index 3b4a2f798..f05856416 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -394,21 +394,20 @@ export const AuthPrompt = GObject.registerClass({
}
_onShowMessage(_userVerifier, serviceName, message, type) {
- let wiggleParameters = {duration: 0};
+ this.setMessage(message, type);
+ this.emit('prompted');
if (type === GdmUtil.MessageType.ERROR &&
this._userVerifier.serviceIsFingerprint(serviceName)) {
// TODO: Use Await for wiggle to be over before unfreezing the user verifier queue
- wiggleParameters = {
+ const wiggleParameters = {
duration: 65,
wiggleCount: 3,
};
this._userVerifier.increaseCurrentMessageTimeout(
wiggleParameters.duration * (wiggleParameters.wiggleCount + 2));
+ wiggle(this._message, wiggleParameters);
}
-
- this.setMessage(message, type, wiggleParameters);
- this.emit('prompted');
}
_onVerificationFailed(userVerifier, serviceName, canRetry) {
@@ -587,7 +586,7 @@ export const AuthPrompt = GObject.registerClass({
});
}
- setMessage(message, type, wiggleParameters = {duration: 0}) {
+ setMessage(message, type) {
if (type === GdmUtil.MessageType.ERROR)
this._message.add_style_class_name('login-dialog-message-warning');
else
@@ -607,8 +606,6 @@ export const AuthPrompt = GObject.registerClass({
} else {
this._message.opacity = 0;
}
-
- wiggle(this._message, wiggleParameters);
}
updateSensitivity(sensitive) {
--
2.55.0
From 1e3f937a6ccfc8ea79c80d78df121102cffbdeff Mon Sep 17 00:00:00 2001
From: Joan Torres Lopez <joantolo@redhat.com>
Date: Tue, 5 May 2026 17:28:18 +0200
Subject: [PATCH 3/3] authPrompt: Await wiggle via show-message promise
resolver
Pass promise resolver through the show-message signal so the
message queue waits for the wiggle animation to finish before scheduling
the next message timeout. This replaces the previous approach of manually
increasing the timeout duration to account for the wiggle.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4209>
---
js/gdm/authPrompt.js | 21 +++++++++------------
js/gdm/util.js | 27 +++++++++++++++++----------
2 files changed, 26 insertions(+), 22 deletions(-)
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index f05856416..b1e8202bd 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -393,21 +393,18 @@ export const AuthPrompt = GObject.registerClass({
this.reset();
}
- _onShowMessage(_userVerifier, serviceName, message, type) {
+ _onShowMessage(_userVerifier, serviceName, message, type, showMessageResolver) {
this.setMessage(message, type);
this.emit('prompted');
- if (type === GdmUtil.MessageType.ERROR &&
- this._userVerifier.serviceIsFingerprint(serviceName)) {
- // TODO: Use Await for wiggle to be over before unfreezing the user verifier queue
- const wiggleParameters = {
- duration: 65,
- wiggleCount: 3,
- };
- this._userVerifier.increaseCurrentMessageTimeout(
- wiggleParameters.duration * (wiggleParameters.wiggleCount + 2));
- wiggle(this._message, wiggleParameters);
- }
+ const shouldWiggle = type === GdmUtil.MessageType.ERROR &&
+ this._userVerifier.serviceIsFingerprint(serviceName);
+
+ const wigglePromise = shouldWiggle
+ ? wiggle(this._message, {duration: 65, wiggleCount: 3})
+ : Promise.resolve();
+
+ showMessageResolver?.(wigglePromise);
}
_onVerificationFailed(userVerifier, serviceName, canRetry) {
diff --git a/js/gdm/util.js b/js/gdm/util.js
index 4b0f763f0..e529f84fa 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -262,11 +262,6 @@ export class ShellUserVerifier extends Signals.EventEmitter {
this.emit('no-more-messages');
}
- increaseCurrentMessageTimeout(interval) {
- if (!this._messageQueueTimeoutId && interval > 0)
- this._currentMessageExtraInterval = interval;
- }
-
_serviceHasPendingMessages(serviceName) {
return this._messageQueue.some(m => m.serviceName === serviceName);
}
@@ -279,17 +274,23 @@ export class ShellUserVerifier extends Signals.EventEmitter {
this._queuePriorityMessage(serviceName, null, messageType);
}
- _queueMessageTimeout() {
- if (this._messageQueueTimeoutId !== 0)
+ async _queueMessageTimeout() {
+ if (this._messageQueueTimeoutId !== 0 || this._showMessageResolver)
return;
const message = this.currentMessage;
+ const {promise, resolve} = Promise.withResolvers();
+ this._showMessageResolver = resolve;
- delete this._currentMessageExtraInterval;
- this.emit('show-message', message.serviceName, message.text, message.type);
+ this.emit('show-message', message.serviceName, message.text, message.type, this._showMessageResolver);
+
+ await promise.catch(logError);
+ if (!this._showMessageResolver)
+ return;
+ this._showMessageResolver = null;
this._messageQueueTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
- message.interval + (this._currentMessageExtraInterval | 0), () => {
+ message.interval, () => {
this._messageQueueTimeoutId = 0;
if (this._messageQueue.length > 1) {
@@ -332,6 +333,12 @@ export class ShellUserVerifier extends Signals.EventEmitter {
GLib.source_remove(this._messageQueueTimeoutId);
this._messageQueueTimeoutId = 0;
}
+
+ if (this._showMessageResolver) {
+ this._showMessageResolver();
+ this._showMessageResolver = null;
+ }
+
this.emit('show-message', null, null, MessageType.NONE);
}
--
2.55.0