From 3b9645a7651c9e54da1a41b460fd4566e3bb7019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 10 Feb 2026 20:17:27 +0100 Subject: [PATCH] Update to 49.4 Resolves: https://issues.redhat.com/browse/RHEL-144940 --- .gitignore | 1 + ...web-login-and-unified-auth-mechanism.patch | 397 +++++++++--------- ...imum-display-time-for-authentication.patch | 45 -- 3939-rediffed.patch | 57 --- gnome-shell.spec | 12 +- sources | 2 +- 6 files changed, 204 insertions(+), 310 deletions(-) delete mode 100644 0001-gdm-util-Set-minimum-display-time-for-authentication.patch delete mode 100644 3939-rediffed.patch diff --git a/.gitignore b/.gitignore index 0c56106..7aa8679 100644 --- a/.gitignore +++ b/.gitignore @@ -242,3 +242,4 @@ gnome-shell-2.31.5.tar.bz2 /gnome-shell-47.9.tar.xz /gnome-shell-47.10.tar.xz /gnome-shell-49.1.tar.xz +/gnome-shell-49.4.tar.xz diff --git a/0001-Support-for-web-login-and-unified-auth-mechanism.patch b/0001-Support-for-web-login-and-unified-auth-mechanism.patch index bed04ae..3c391a2 100644 --- a/0001-Support-for-web-login-and-unified-auth-mechanism.patch +++ b/0001-Support-for-web-login-and-unified-auth-mechanism.patch @@ -1,4 +1,4 @@ -From ad29c73ff970f406db43391f38f27a34aecfd6c9 Mon Sep 17 00:00:00 2001 +From 14645c77a9f2df2ed822df73ef29bb610535c7a4 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 2 Oct 2025 10:59:57 +0200 Subject: [PATCH 01/30] style: Add common login dialog button styles to avoid @@ -80,10 +80,10 @@ index b661e93c8d..6cca1e28e9 100644 padding: $base_padding * 1.5; -- -2.51.0 +2.53.0 -From 1e02163f891483fc24536c490f3fc5f1a85b3a37 Mon Sep 17 00:00:00 2001 +From d17d0aa4ee0e4d334ca4b0e5cda595065ca275f3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Sun, 24 Nov 2024 12:53:50 -0500 Subject: [PATCH 02/30] unlockDialog: Add some small fixes @@ -155,10 +155,10 @@ index 63ba591eec..03d91b6114 100644 } -- -2.51.0 +2.53.0 -From 8669977768cdf0fe03a62d7fb48370a86c053db3 Mon Sep 17 00:00:00 2001 +From fd68f33f22b525817e77fd1673845f3362c8c2ef Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 9 Feb 2024 09:02:25 -0500 Subject: [PATCH 03/30] authPrompt: Fade out input buttons/entry after @@ -177,7 +177,7 @@ authList. It'll be used in next commits. 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 2bf722b140..cdacd32172 100644 +index 3b4a2f7988..46ae96fa43 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -51,6 +51,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -245,10 +245,10 @@ index 2bf722b140..cdacd32172 100644 getAnswer() { diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 26966b633d..886e432063 100644 +index 5aca896db9..f3839aae76 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -587,6 +587,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -590,6 +590,7 @@ export const LoginDialog = GObject.registerClass({ this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN); this._authPrompt.connect('prompted', this._onPrompted.bind(this)); this._authPrompt.connect('reset', this._onReset.bind(this)); @@ -256,7 +256,7 @@ index 26966b633d..886e432063 100644 this._authPrompt.hide(); this.add_child(this._authPrompt); -@@ -1081,6 +1082,16 @@ export const LoginDialog = GObject.registerClass({ +@@ -1091,6 +1092,16 @@ export const LoginDialog = GObject.registerClass({ } } @@ -274,10 +274,10 @@ index 26966b633d..886e432063 100644 this._sessionMenuButton.setActiveSession(sessionId); } -- -2.51.0 +2.53.0 -From 50c44700221fc8c50ca9a9580f6d3cd95fba5dd0 Mon Sep 17 00:00:00 2001 +From 2e93995f199a23f1e5586c865c17ed5a0f418c1f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 21 Jan 2026 14:23:34 +0100 Subject: [PATCH 04/30] authPrompt: Don't reset preemptiveAnswer when @@ -293,7 +293,7 @@ service asks for the PIN. 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index cdacd32172..5878c57620 100644 +index 46ae96fa43..d2df52783f 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -688,7 +688,8 @@ export const AuthPrompt = GObject.registerClass({ @@ -307,10 +307,10 @@ index cdacd32172..5878c57620 100644 if (this._preemptiveAnswerWatchId) this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); -- -2.51.0 +2.53.0 -From bbdc3c3e707cfbfe0762a747daf68b77f0c43b38 Mon Sep 17 00:00:00 2001 +From 1c3df3584af15dddb8392644da84c8ab2d57a685 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Sun, 24 Nov 2024 16:29:43 -0500 Subject: [PATCH 05/30] authPrompt: Add some changes to the elements in @@ -418,7 +418,7 @@ index 6cca1e28e9..93dbe617b7 100644 .conflicting-session-dialog-content { diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 5878c57620..7faec91bdc 100644 +index d2df52783f..175a04eb28 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -2,6 +2,7 @@ import Clutter from 'gi://Clutter'; @@ -787,10 +787,10 @@ index 5878c57620..7faec91bdc 100644 this._message.opacity = 0; -- -2.51.0 +2.53.0 -From a70c8fae77f0b41359c0962aeb5c31bf6011ddf5 Mon Sep 17 00:00:00 2001 +From 2229de4921be07ecae638f97a04df58753e29999 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:06:32 -0500 Subject: [PATCH 06/30] authPrompt: Parameterize reset function @@ -805,7 +805,7 @@ reusing entry text to be specified at reset time. 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 7faec91bdc..292621bde3 100644 +index 175a04eb28..602f2a1d00 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -479,9 +479,11 @@ export const AuthPrompt = GObject.registerClass({ @@ -904,10 +904,10 @@ index 7faec91bdc..292621bde3 100644 this.emit('reset', beginRequestType); -- -2.51.0 +2.53.0 -From 88fd7f035436f43bbadd1ca65dd64a75179ae719 Mon Sep 17 00:00:00 2001 +From 22b6abee7ee54589bc10281006fcfd6ea0315a68 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 21 Jan 2026 14:34:11 +0100 Subject: [PATCH 07/30] authPrompt: Capture preemptive input before entry is @@ -926,7 +926,7 @@ to become sensitive. 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 292621bde3..3a82f97d47 100644 +index 602f2a1d00..a073ab21a8 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -152,6 +152,18 @@ export const AuthPrompt = GObject.registerClass({ @@ -1010,10 +1010,10 @@ index 03d91b6114..a8bdb93b8c 100644 return Clutter.EVENT_PROPAGATE; } -- -2.51.0 +2.53.0 -From b3017fc5d41f1c3fc3b3f0e744acb83e7017e7c9 Mon Sep 17 00:00:00 2001 +From caffa2924f7e521c05d9eb3b26dba3388c6b333f Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 11 Sep 2025 19:12:05 +0200 Subject: [PATCH 08/30] authPrompt: On verificationFailed ensure input @@ -1030,7 +1030,7 @@ verification process, reenabling sensitivity. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 3a82f97d47..1cddbd3f5e 100644 +index a073ab21a8..5cba71c813 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -466,7 +466,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -1043,10 +1043,10 @@ index 3a82f97d47..1cddbd3f5e 100644 if (!canRetry) -- -2.51.0 +2.53.0 -From cb492e57c4361d5c3de4c3b2e14db65d61603b64 Mon Sep 17 00:00:00 2001 +From 9edee1f213696a661b441825149a50fa50d5efa8 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 30 Sep 2025 17:43:22 +0200 Subject: [PATCH 09/30] authPrompt: Update authList style @@ -1195,12 +1195,12 @@ index 93dbe617b7..5dbc00a718 100644 // User list .login-dialog-user-list-view { diff --git a/js/gdm/authList.js b/js/gdm/authList.js -index 6575ca4c01..1bb635cb87 100644 +index 4873a05c58..674cb5dc9f 100644 --- a/js/gdm/authList.js +++ b/js/gdm/authList.js -@@ -17,29 +17,65 @@ - +@@ -18,29 +18,65 @@ import Clutter from 'gi://Clutter'; + import GLib from 'gi://GLib'; import GObject from 'gi://GObject'; +import Graphene from 'gi://Graphene'; import Meta from 'gi://Meta'; @@ -1269,7 +1269,7 @@ index 6575ca4c01..1bb635cb87 100644 }); this.connect('key-focus-in', -@@ -52,6 +88,83 @@ const AuthListItem = GObject.registerClass({ +@@ -53,6 +89,83 @@ const AuthListItem = GObject.registerClass({ this.connect('clicked', this._onClicked.bind(this)); } @@ -1353,7 +1353,7 @@ index 6575ca4c01..1bb635cb87 100644 _onClicked() { this.emit('activate'); } -@@ -76,13 +189,11 @@ export const AuthList = GObject.registerClass({ +@@ -77,13 +190,11 @@ export const AuthList = GObject.registerClass({ super._init({ orientation: Clutter.Orientation.VERTICAL, style_class: 'login-dialog-auth-list-layout', @@ -1369,7 +1369,7 @@ index 6575ca4c01..1bb635cb87 100644 this._box = new St.BoxLayout({ orientation: Clutter.Orientation.VERTICAL, style_class: 'login-dialog-auth-list', -@@ -135,10 +246,10 @@ export const AuthList = GObject.registerClass({ +@@ -136,10 +247,10 @@ export const AuthList = GObject.registerClass({ }); } @@ -1382,7 +1382,7 @@ index 6575ca4c01..1bb635cb87 100644 this._box.add_child(item); this._items.set(key, item); -@@ -169,7 +280,6 @@ export const AuthList = GObject.registerClass({ +@@ -170,7 +281,6 @@ export const AuthList = GObject.registerClass({ } clear() { @@ -1391,7 +1391,7 @@ index 6575ca4c01..1bb635cb87 100644 this._items.clear(); } diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 1cddbd3f5e..5e18d8c751 100644 +index 5cba71c813..4be4c4f7cd 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -212,13 +212,30 @@ export const AuthPrompt = GObject.registerClass({ @@ -1450,10 +1450,10 @@ index 1cddbd3f5e..5e18d8c751 100644 this._entryArea.hide(); diff --git a/js/gdm/util.js b/js/gdm/util.js -index c87690f859..af512685a5 100644 +index b027d16e8d..fdd89b4e10 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -724,7 +724,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -728,7 +728,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (!this.serviceIsForeground(serviceName)) return; @@ -1479,10 +1479,10 @@ index ee0829c96e..8be425615d 100644 js/gdm/loginDialog.js js/gdm/util.js -- -2.51.0 +2.53.0 -From 5443b2061ab6493fdab6e4b2bb3389c2e5cf7a2d Mon Sep 17 00:00:00 2001 +From c410ba6f5aded2f1327eea0a98048ecf2e50fdb1 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 8 Oct 2025 18:48:07 +0200 Subject: [PATCH 10/30] authPrompt: Let back button go back to step 1 instead @@ -1499,7 +1499,7 @@ Show backButton in unlockDialog for these cases. 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 5e18d8c751..3027adca6d 100644 +index 4be4c4f7cd..73d5bae28d 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -70,6 +70,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -1606,10 +1606,10 @@ index 5e18d8c751..3027adca6d 100644 this._cancelledRetries++; if (this._cancelledRetries > this._userVerifier.allowedFailures) -- -2.51.0 +2.53.0 -From 587d4f56cde0fb8fb4ee6282323385d1dbde1bbf Mon Sep 17 00:00:00 2001 +From 45fa26714c486b00cddfcb251ab2f99024323239 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 20 Oct 2025 17:24:40 +0200 Subject: [PATCH 11/30] loginDialog: Vertically align promptAuth with fixed top @@ -1619,10 +1619,10 @@ Subject: [PATCH 11/30] loginDialog: Vertically align promptAuth with fixed top 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 886e432063..103bdfd83b 100644 +index f3839aae76..d9194cb9fe 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -729,6 +729,25 @@ export const LoginDialog = GObject.registerClass({ +@@ -732,6 +732,25 @@ export const LoginDialog = GObject.registerClass({ return actorBox; } @@ -1648,7 +1648,7 @@ index 886e432063..103bdfd83b 100644 _getCenterActorAllocation(dialogBox, actor) { let actorBox = new Clutter.ActorBox(); -@@ -767,7 +786,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -770,7 +789,7 @@ export const LoginDialog = GObject.registerClass({ let authPromptAllocation = null; let authPromptWidth = 0; if (this._authPrompt.visible) { @@ -1658,10 +1658,10 @@ index 886e432063..103bdfd83b 100644 } -- -2.51.0 +2.53.0 -From f033d96f18d630af58e847b9b446ef72c6832b4a Mon Sep 17 00:00:00 2001 +From 24ce2bcb4353f4a81528263332c5b7cbdd95579b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 12 Nov 2024 14:26:30 -0500 Subject: [PATCH 12/30] data: Add fingerprint and vcard icons @@ -1749,10 +1749,10 @@ index 0000000000..1694f23645 + + -- -2.51.0 +2.53.0 -From 73239a973f591106ecc616827e160f36b74ce221 Mon Sep 17 00:00:00 2001 +From 3c30881e4265128cfdd307d844b47da50cbb58fa Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 18 Aug 2025 12:30:50 +0200 Subject: [PATCH 13/30] gdm: Extract authentication service and role constants @@ -1774,7 +1774,7 @@ constants. create mode 100644 js/gdm/const.js diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 3027adca6d..4804d6af8e 100644 +index 73d5bae28d..72a1c0a04c 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -10,6 +10,7 @@ import St from 'gi://St'; @@ -1811,10 +1811,10 @@ index 0000000000..2f37446c8a +export const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint'; +export const SWITCHABLE_AUTH_SERVICE_NAME = 'gdm-switchable-auth'; diff --git a/js/gdm/util.js b/js/gdm/util.js -index af512685a5..3ad0116686 100644 +index fdd89b4e10..cabd7cbf02 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -23,9 +23,6 @@ Gio._promisify(Gdm.UserVerifierProxy.prototype, +@@ -24,9 +24,6 @@ Gio._promisify(Gdm.UserVerifierProxy.prototype, 'call_begin_verification_for_user'); Gio._promisify(Gdm.UserVerifierProxy.prototype, 'call_begin_verification'); @@ -1824,7 +1824,7 @@ index af512685a5..3ad0116686 100644 const CLONE_FADE_ANIMATION_TIME = 250; export const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; -@@ -97,6 +94,37 @@ export function cloneAndFadeOutActor(actor) { +@@ -101,6 +98,37 @@ export function cloneAndFadeOutActor(actor) { return hold; } @@ -1882,7 +1882,7 @@ index af512685a5..3ad0116686 100644 this._preemptingService = null; this._updateDefaultService(); -@@ -602,7 +630,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -606,7 +634,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { return true; } @@ -1891,7 +1891,7 @@ index af512685a5..3ad0116686 100644 } serviceIsDefault(serviceName) { -@@ -611,7 +639,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -615,7 +643,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { serviceIsFingerprint(serviceName) { return this._fingerprintReaderType !== FingerprintReaderType.NONE && @@ -1900,7 +1900,7 @@ index af512685a5..3ad0116686 100644 } _onSettingsChanged() { -@@ -628,7 +656,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -632,7 +660,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._fingerprintManager = null; this._fingerprintReaderType = FingerprintReaderType.NONE; @@ -1909,7 +1909,7 @@ index af512685a5..3ad0116686 100644 needsReset = true; } -@@ -638,7 +666,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -642,7 +670,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._smartcardManager.disconnectObject(this); this._smartcardManager = null; @@ -1918,7 +1918,7 @@ index af512685a5..3ad0116686 100644 needsReset = true; } -@@ -648,13 +676,13 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -652,13 +680,13 @@ export class ShellUserVerifier extends Signals.EventEmitter { _getDetectedDefaultService() { if (this._smartcardManager?.loggedInWithToken()) @@ -1936,7 +1936,7 @@ index af512685a5..3ad0116686 100644 return null; } -@@ -664,7 +692,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -668,7 +696,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (!this._defaultService) { log('no authentication service is enabled, using password authentication'); @@ -1945,7 +1945,7 @@ index af512685a5..3ad0116686 100644 } if (oldDefaultService && -@@ -716,8 +744,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -720,8 +748,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { async _maybeStartFingerprintVerification() { if (this._userName && this._fingerprintReaderType !== FingerprintReaderType.NONE && @@ -1956,7 +1956,7 @@ index af512685a5..3ad0116686 100644 } _onChoiceListQuery(client, serviceName, promptMessage, list) { -@@ -850,7 +878,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -854,7 +882,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } async _verificationFailed(serviceName, shouldRetry) { @@ -1978,10 +1978,10 @@ index e5e6167f15..ee6b77d322 100644 gdm/loginDialog.js gdm/oVirt.js -- -2.51.0 +2.53.0 -From e45452807bcc688520627a358b764c9d7d089cf4 Mon Sep 17 00:00:00 2001 +From 1e6e560c2e6eda3e82bd0a5e60e29b8d5f724708 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 11:04:20 -0500 Subject: [PATCH 14/30] gdm: Add new AuthMenuButton control @@ -2644,10 +2644,10 @@ index ee6b77d322..254d2af958 100644 gdm/batch.js gdm/const.js diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js -index 0426ce5452..b719b1bc0c 100644 +index 2c882c1067..e559845f4c 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js -@@ -1104,6 +1104,28 @@ export class PopupMenu extends PopupMenuBase { +@@ -1105,6 +1105,28 @@ export class PopupMenu extends PopupMenuBase { this._boxPointer.setSourceAlignment(alignment); } @@ -2677,10 +2677,10 @@ index 0426ce5452..b719b1bc0c 100644 if (this.isOpen) return; -- -2.51.0 +2.53.0 -From bdd51d00dbc012b596d1910ffecd153ba3eb8fb4 Mon Sep 17 00:00:00 2001 +From 6382cd3143c867ee92fbacca4b830ff1a2d4f2e8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 11:11:32 -0500 Subject: [PATCH 15/30] loginDialog: Port sessions menu over to AuthMenuButton @@ -2691,8 +2691,8 @@ This commit changes the session menu over to use the new control. --- .../gnome-shell-sass/widgets/_login-lock.scss | 1 + - js/gdm/loginDialog.js | 167 ++++++------------ - 2 files changed, 56 insertions(+), 112 deletions(-) + js/gdm/loginDialog.js | 170 ++++++------------ + 2 files changed, 56 insertions(+), 115 deletions(-) diff --git a/data/theme/gnome-shell-sass/widgets/_login-lock.scss b/data/theme/gnome-shell-sass/widgets/_login-lock.scss index 4b4f1a5d4e..58c2ed495c 100644 @@ -2707,7 +2707,7 @@ index 4b4f1a5d4e..58c2ed495c 100644 @extend .icon-button; @extend %system_button; diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 103bdfd83b..f9c5602e70 100644 +index d9194cb9fe..bbda3260b5 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -27,9 +27,9 @@ import Pango from 'gi://Pango'; @@ -2729,7 +2729,7 @@ index 103bdfd83b..f9c5602e70 100644 const N_A11Y_MENU_COLUMNS = 2; -@@ -314,100 +315,6 @@ const UserList = GObject.registerClass({ +@@ -314,103 +315,6 @@ const UserList = GObject.registerClass({ } }); @@ -2804,17 +2804,20 @@ index 103bdfd83b..f9c5602e70 100644 - - _populate() { - let ids = Gdm.get_session_ids(); -- ids.sort(); - - if (ids.length <= 1) { - this._button.hide(); - return; - } - -- for (let i = 0; i < ids.length; i++) { -- let [sessionName, sessionDescription_] = Gdm.get_session_name_and_description(ids[i]); +- const sessions = ids.map(id => { +- const [sessionName] = Gdm.get_session_name_and_description(id); +- return {id, sessionName}; +- }); - -- let id = ids[i]; +- sessions.sort((a, b) => a.sessionName.localeCompare(b.sessionName)); +- +- for (const {id, sessionName} of sessions) { - let item = new PopupMenu.PopupMenuItem(sessionName); - this._menu.addMenuItem(item); - this._items.set(id, item); @@ -2830,7 +2833,7 @@ index 103bdfd83b..f9c5602e70 100644 const A11yMenuButton = GObject.registerClass( class A11yMenuButton extends St.Button { constructor() { -@@ -588,6 +495,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -591,6 +495,7 @@ export const LoginDialog = GObject.registerClass({ this._authPrompt.connect('prompted', this._onPrompted.bind(this)); this._authPrompt.connect('reset', this._onReset.bind(this)); this._authPrompt.connect('verification-complete', this._onVerificationComplete.bind(this)); @@ -2838,7 +2841,7 @@ index 103bdfd83b..f9c5602e70 100644 this._authPrompt.hide(); this.add_child(this._authPrompt); -@@ -641,14 +549,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -644,14 +549,7 @@ export const LoginDialog = GObject.registerClass({ }); this.add_child(this._bottomButtonGroup); @@ -2854,7 +2857,7 @@ index 103bdfd83b..f9c5602e70 100644 this._a11yMenuButton = new A11yMenuButton(); this._bottomButtonGroup.add_child(this._a11yMenuButton); -@@ -684,6 +585,45 @@ export const LoginDialog = GObject.registerClass({ +@@ -687,6 +585,45 @@ export const LoginDialog = GObject.registerClass({ this._updateDisableUserList.bind(this), this); } @@ -2900,7 +2903,7 @@ index 103bdfd83b..f9c5602e70 100644 _getBannerAllocation(dialogBox) { let actorBox = new Clutter.ActorBox(); -@@ -1054,10 +994,8 @@ export const LoginDialog = GObject.registerClass({ +@@ -1057,10 +994,8 @@ export const LoginDialog = GObject.registerClass({ } _onPrompted() { @@ -2912,7 +2915,7 @@ index 103bdfd83b..f9c5602e70 100644 this._showPrompt(); } -@@ -1077,7 +1015,6 @@ export const LoginDialog = GObject.registerClass({ +@@ -1087,7 +1022,6 @@ export const LoginDialog = GObject.registerClass({ _onReset(authPrompt, beginRequest) { this._ensureGreeterProxy(); @@ -2920,7 +2923,7 @@ index 103bdfd83b..f9c5602e70 100644 const previousUser = this._user; this._user = null; -@@ -1111,11 +1048,18 @@ export const LoginDialog = GObject.registerClass({ +@@ -1121,11 +1055,18 @@ export const LoginDialog = GObject.registerClass({ }); } @@ -2941,7 +2944,7 @@ index 103bdfd83b..f9c5602e70 100644 const visibleStatuses = [ AuthPrompt.AuthPromptStatus.VERIFYING, AuthPrompt.AuthPromptStatus.VERIFICATION_FAILED, -@@ -1177,7 +1121,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -1187,7 +1128,7 @@ export const LoginDialog = GObject.registerClass({ }); this._updateCancelButton(); @@ -2950,7 +2953,7 @@ index 103bdfd83b..f9c5602e70 100644 this._authPrompt.updateSensitivity(true); this._showPrompt(); } -@@ -1491,8 +1435,7 @@ export const LoginDialog = GObject.registerClass({ +@@ -1501,8 +1442,7 @@ export const LoginDialog = GObject.registerClass({ this._ensureUserListLoaded(); this._authPrompt.hide(); this._hideBannerView(); @@ -2961,10 +2964,10 @@ index 103bdfd83b..f9c5602e70 100644 this._notListedButton.show(); this._userList.grab_key_focus(); -- -2.51.0 +2.53.0 -From ec49238b27648005d9c0a192acb41da47264b494 Mon Sep 17 00:00:00 2001 +From e331a873aade48c0ad4bc28103c62716ede9924f Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:40:26 -0500 Subject: [PATCH 16/30] loginDialog: Add login options menu to AuthMenuButton @@ -2994,7 +2997,7 @@ Co-authored-by: Marco Trevisan (Treviño) 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 4804d6af8e..90eef29313 100644 +index 72a1c0a04c..4b18a09563 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -51,6 +51,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -3032,7 +3035,7 @@ index 4804d6af8e..90eef29313 100644 if (!this._preemptiveAnswerWatchId || this._preemptiveAnswer || diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index f9c5602e70..b8cab9c3e3 100644 +index bbda3260b5..70c461f3a6 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -47,6 +47,7 @@ const _FADE_ANIMATION_TIME = 250; @@ -3103,7 +3106,7 @@ index f9c5602e70..b8cab9c3e3 100644 _getBannerAllocation(dialogBox) { let actorBox = new Clutter.ActorBox(); -@@ -1052,6 +1065,27 @@ export const LoginDialog = GObject.registerClass({ +@@ -1059,6 +1072,27 @@ export const LoginDialog = GObject.registerClass({ this._authMenuButton.updateReactive(!isLoading); } @@ -3132,10 +3135,10 @@ index f9c5602e70..b8cab9c3e3 100644 this._authMenuButton.setActiveItem({ sectionName: _SESSION_TYPE_SECTION_NAME, -- -2.51.0 +2.53.0 -From 4519eba61a47554de60ad4bd06c5c7733e283597 Mon Sep 17 00:00:00 2001 +From b42cce9f69d6c488d82e3fa86ce997155cfd27be Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 13:41:39 -0500 Subject: [PATCH 17/30] unlockDialog: Add _authMenuButton and @@ -3424,10 +3427,10 @@ index a8bdb93b8c..372baee262 100644 cancel() { -- -2.51.0 +2.53.0 -From 028069486a9bb053e7fd4c37f4d2ad2e34e60825 Mon Sep 17 00:00:00 2001 +From f67e0659caebe427d4abbf5ede2352a135ce07e1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 3 Dec 2024 07:39:32 -0500 Subject: [PATCH 18/30] unlockDialog: Update hint text based on mockup @@ -3464,10 +3467,10 @@ index 372baee262..5deb435daa 100644 _onDestroy() { -- -2.51.0 +2.53.0 -From 93db7daf7f86b4e5bf4448d019b9a5863dfa080e Mon Sep 17 00:00:00 2001 +From ed34ba8309f1abbbbf684f6f30b6fc921377c83d Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 14 Oct 2025 19:19:15 +0200 Subject: [PATCH 19/30] gdm/util: Increase time of messages based on new @@ -3476,30 +3479,31 @@ Subject: [PATCH 19/30] gdm/util: Increase time of messages based on new called 'GDM_MESSAGE_TIME_MULTIPLIER'. This is can used for testing purposes. When no set, the multiplier is 1 which does nothing. --- - js/gdm/util.js | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) + js/gdm/util.js | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/gdm/util.js b/js/gdm/util.js -index 3ad0116686..20dcd4c49a 100644 +index cabd7cbf02..6f19d03989 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -278,8 +278,10 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -278,8 +278,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (!message) return 0; + const messageTimeMultiplier = GLib.getenv('GDM_MESSAGE_TIME_MULTIPLIER') ?? 1; + // We probably could be smarter here -- return message.length * USER_READ_TIME; -+ return message.length * USER_READ_TIME * messageTimeMultiplier; +- return Math.max(message.length * USER_READ_TIME, USER_READ_TIME_MIN); ++ return Math.max(message.length * USER_READ_TIME * messageTimeMultiplier, ++ USER_READ_TIME_MIN); } finishMessageQueue() { -- -2.51.0 +2.53.0 -From 87c3debe06256886273e1fd2217d5a10198b38d0 Mon Sep 17 00:00:00 2001 +From ae8dd287a062d83332f0750d65d56177b93b0a4c Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 15 Sep 2025 17:13:17 +0200 Subject: [PATCH 20/30] gdm/util: Allow null _hold and don't recreate dummy @@ -3521,7 +3525,7 @@ but for now, just accept getting null and dont create dummy ones. 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 90eef29313..5341f2b980 100644 +index 4b18a09563..cb851c05b6 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -857,11 +857,7 @@ export const AuthPrompt = GObject.registerClass({ @@ -3538,10 +3542,10 @@ index 90eef29313..5341f2b980 100644 } diff --git a/js/gdm/util.js b/js/gdm/util.js -index 20dcd4c49a..b797d1d321 100644 +index 6f19d03989..2f2862f19d 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -463,8 +463,6 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -464,8 +464,6 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (this._userVerifier && !this._activeServices.has(Const.FINGERPRINT_SERVICE_NAME)) { @@ -3550,7 +3554,7 @@ index 20dcd4c49a..b797d1d321 100644 await this._maybeStartFingerprintVerification(); } } -@@ -528,7 +526,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -529,7 +527,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { _reportInitError(where, error, serviceName) { logError(error, where); @@ -3559,7 +3563,7 @@ index 20dcd4c49a..b797d1d321 100644 this._queueMessage(serviceName, _('Authentication error'), MessageType.ERROR); this._failCounter++; -@@ -564,7 +562,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -567,7 +565,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this.reauthenticating = true; this._connectSignals(); this._beginVerification(); @@ -3568,7 +3572,7 @@ index 20dcd4c49a..b797d1d321 100644 } async _getUserVerifier() { -@@ -586,7 +584,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -591,7 +589,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._connectSignals(); this._beginVerification(); @@ -3577,7 +3581,7 @@ index 20dcd4c49a..b797d1d321 100644 } _connectSignals() { -@@ -704,7 +702,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -709,7 +707,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } async _startService(serviceName) { @@ -3586,7 +3590,7 @@ index 20dcd4c49a..b797d1d321 100644 try { this._activeServices.add(serviceName); -@@ -725,7 +723,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -730,7 +728,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (!this.serviceIsForeground(serviceName)) { logError(e, `Failed to start ${serviceName} for ${this._userName}`); @@ -3595,7 +3599,7 @@ index 20dcd4c49a..b797d1d321 100644 return; } this._reportInitError( -@@ -735,7 +733,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -740,7 +738,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { e, serviceName); return; } @@ -3604,7 +3608,7 @@ index 20dcd4c49a..b797d1d321 100644 } _beginVerification() { -@@ -869,7 +867,6 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -874,7 +872,6 @@ export class ShellUserVerifier extends Signals.EventEmitter { } _retry(serviceName) { @@ -3613,10 +3617,10 @@ index 20dcd4c49a..b797d1d321 100644 this._startService(serviceName); } -- -2.51.0 +2.53.0 -From df3dae82666e74076700534d08d413192e2c2986 Mon Sep 17 00:00:00 2001 +From b2f750be73f2c22866a4e9ed356722e0d09c092e Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 20 Aug 2025 10:54:33 +0200 Subject: [PATCH 21/30] gdm/util: Add fingerprintManager @@ -3636,7 +3640,7 @@ authentication to a specific class instead of util. create mode 100644 js/misc/fingerprintManager.js diff --git a/js/gdm/util.js b/js/gdm/util.js -index b797d1d321..cea0a5b213 100644 +index 2f2862f19d..6c9e0a54a2 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -5,6 +5,8 @@ import GLib from 'gi://GLib'; @@ -3648,7 +3652,7 @@ index b797d1d321..cea0a5b213 100644 import * as OVirt from './oVirt.js'; import * as Vmware from './vmware.js'; import * as Main from '../ui/main.js'; -@@ -12,11 +14,6 @@ import {loadInterfaceXML} from '../misc/fileUtils.js'; +@@ -13,11 +15,6 @@ import {loadInterfaceXML} from '../misc/fileUtils.js'; import * as Params from '../misc/params.js'; import * as SmartcardManager from '../misc/smartcardManager.js'; @@ -3660,7 +3664,7 @@ index b797d1d321..cea0a5b213 100644 Gio._promisify(Gdm.Client.prototype, 'open_reauthentication_channel'); Gio._promisify(Gdm.Client.prototype, 'get_user_verifier'); Gio._promisify(Gdm.UserVerifierProxy.prototype, -@@ -55,12 +52,6 @@ export const MessageType = { +@@ -59,12 +56,6 @@ export const MessageType = { ERROR: 3, }; @@ -3673,7 +3677,7 @@ index b797d1d321..cea0a5b213 100644 /** * @param {Clutter.Actor} actor */ -@@ -136,7 +127,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -140,7 +131,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._defaultService = null; this._preemptingService = null; @@ -3683,7 +3687,7 @@ index b797d1d321..cea0a5b213 100644 this._fprintStartTime = -1; this._messageQueue = []; -@@ -201,8 +193,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -205,8 +197,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._userName = userName; this.reauthenticating = false; @@ -3693,7 +3697,7 @@ index b797d1d321..cea0a5b213 100644 // If possible, reauthenticate an already running session, // so any session specific credentials get updated appropriately -@@ -254,6 +245,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -255,6 +246,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._smartcardManager?.disconnectObject(this); this._smartcardManager = null; @@ -3701,7 +3705,7 @@ index b797d1d321..cea0a5b213 100644 this._fingerprintManager = null; for (let service in this._credentialManagers) -@@ -367,112 +359,40 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -368,112 +360,40 @@ export class ShellUserVerifier extends Signals.EventEmitter { } async _initFingerprintManager() { @@ -3839,7 +3843,7 @@ index b797d1d321..cea0a5b213 100644 } _onCredentialManagerAuthenticated(credentialManager, _token) { -@@ -638,7 +558,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -643,7 +563,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } serviceIsFingerprint(serviceName) { @@ -3848,7 +3852,7 @@ index b797d1d321..cea0a5b213 100644 serviceName === Const.FINGERPRINT_SERVICE_NAME; } -@@ -651,9 +571,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -656,9 +576,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { let needsReset = false; if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { @@ -3861,7 +3865,7 @@ index b797d1d321..cea0a5b213 100644 this._fingerprintReaderType = FingerprintReaderType.NONE; if (this._activeServices.has(Const.FINGERPRINT_SERVICE_NAME)) -@@ -681,7 +603,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -686,7 +608,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { return Const.PASSWORD_SERVICE_NAME; else if (this._smartcardManager) return Const.SMARTCARD_SERVICE_NAME; @@ -3870,7 +3874,7 @@ index b797d1d321..cea0a5b213 100644 return Const.FINGERPRINT_SERVICE_NAME; return null; } -@@ -743,7 +665,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -748,7 +670,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { async _maybeStartFingerprintVerification() { if (this._userName && @@ -3879,7 +3883,7 @@ index b797d1d321..cea0a5b213 100644 !this.serviceIsForeground(Const.FINGERPRINT_SERVICE_NAME)) await this._startService(Const.FINGERPRINT_SERVICE_NAME); } -@@ -766,7 +688,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -771,7 +693,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { // We don't show fingerprint messages directly since it's // not the main auth service. Instead we use the messages // as a cue to display our own message. @@ -4029,10 +4033,10 @@ index 0000000000..60b5163b48 + } +} -- -2.51.0 +2.53.0 -From b661016c26d77d03e3f74e1476410d0fd13b4034 Mon Sep 17 00:00:00 2001 +From f91df3775febb90808c57075896308566cad0928 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 23 Sep 2025 16:45:59 +0200 Subject: [PATCH 22/30] gdm/misc: Add passkeyManager @@ -4140,10 +4144,10 @@ index 0000000000..66e17e3f3c + } +} -- -2.51.0 +2.53.0 -From 17480706b5dccde4c438939960167b1a9296b04b Mon Sep 17 00:00:00 2001 +From aed7e75c2f19aee4964038fdb6ba89d69959b278 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 18 Aug 2025 12:08:21 +0200 Subject: [PATCH 23/30] gdm: Add AuthServices @@ -4207,16 +4211,16 @@ Based on the previous work done by: js/gdm/authPrompt.js | 42 +- js/gdm/authServices.js | 465 +++++++++++++++++++++ js/gdm/authServicesLegacy.js | 318 +++++++++++++++ - js/gdm/util.js | 732 +++++++--------------------------- + js/gdm/util.js | 733 +++++++--------------------------- js/js-resources.gresource.xml | 2 + js/misc/fingerprintManager.js | 4 - po/POTFILES.in | 1 + - 7 files changed, 940 insertions(+), 624 deletions(-) + 7 files changed, 940 insertions(+), 625 deletions(-) create mode 100644 js/gdm/authServices.js create mode 100644 js/gdm/authServicesLegacy.js diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 5341f2b980..57b0ed3aeb 100644 +index cb851c05b6..10598e5c08 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -10,7 +10,6 @@ import St from 'gi://St'; @@ -5092,10 +5096,10 @@ index 0000000000..93f55ec45d + } +}); diff --git a/js/gdm/util.js b/js/gdm/util.js -index cea0a5b213..f35a97b98b 100644 +index 6c9e0a54a2..4c95fd0b6f 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -1,24 +1,13 @@ +@@ -1,25 +1,13 @@ import Clutter from 'gi://Clutter'; -import Gdm from 'gi://Gdm'; import Gio from 'gi://Gio'; @@ -5108,6 +5112,7 @@ index cea0a5b213..f35a97b98b 100644 -import * as OVirt from './oVirt.js'; -import * as Vmware from './vmware.js'; import * as Main from '../ui/main.js'; +-import {logErrorUnlessCancelled} from '../misc/errorUtils.js'; -import {loadInterfaceXML} from '../misc/fileUtils.js'; import * as Params from '../misc/params.js'; -import * as SmartcardManager from '../misc/smartcardManager.js'; @@ -5121,16 +5126,17 @@ index cea0a5b213..f35a97b98b 100644 const CLONE_FADE_ANIMATION_TIME = 250; -@@ -37,8 +26,6 @@ export const DISABLE_USER_LIST_KEY = 'disable-user-list'; - - // Give user 48ms to read each character of a PAM message +@@ -41,9 +29,6 @@ export const DISABLE_USER_LIST_KEY = 'disable-user-list'; const USER_READ_TIME = 48; + const USER_READ_TIME_MIN = 2000; + -const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000; -const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15; - +- /** * Keep messages in order by priority -@@ -52,6 +39,15 @@ export const MessageType = { + * +@@ -56,6 +41,15 @@ export const MessageType = { ERROR: 3, }; @@ -5146,7 +5152,7 @@ index cea0a5b213..f35a97b98b 100644 /** * @param {Clutter.Actor} actor */ -@@ -125,54 +121,12 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -129,54 +123,12 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._client = client; this._cancellable = null; @@ -5202,7 +5208,7 @@ index cea0a5b213..f35a97b98b 100644 } get hasPendingMessages() { -@@ -187,53 +141,54 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -191,50 +143,54 @@ export class ShellUserVerifier extends Signals.EventEmitter { return this._messageQueue ? this._messageQueue[0] : null; } @@ -5250,12 +5256,9 @@ index cea0a5b213..f35a97b98b 100644 - _clearUserVerifier() { - if (this._userVerifier) { - this._disconnectSignals(); -- this._userVerifier.run_dispose(); +- this._userVerifier.get_connection().disconnectObject(this); - this._userVerifier = null; -- if (this._userVerifierChoiceList) { -- this._userVerifierChoiceList.run_dispose(); -- this._userVerifierChoiceList = null; -- } +- this._userVerifierChoiceList = null; - } + reset() { + this._authServicesLegacy?.reset(); @@ -5291,7 +5294,7 @@ index cea0a5b213..f35a97b98b 100644 } destroy() { -@@ -241,29 +196,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -242,28 +198,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._settings.run_dispose(); this._settings = null; @@ -5316,16 +5319,15 @@ index cea0a5b213..f35a97b98b 100644 - await this._handlePendingMessages(); - this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null); - } catch (e) { -- if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) -- logError(e); +- logErrorUnlessCancelled(e); - } + answerQuery(serviceName, answer) { + this._authServicesLegacy?.answerQuery(serviceName, answer); } _getIntervalForMessage(message) { -@@ -276,7 +216,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { - return message.length * USER_READ_TIME * messageTimeMultiplier; +@@ -277,7 +219,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { + USER_READ_TIME_MIN); } - finishMessageQueue() { @@ -5333,7 +5335,7 @@ index cea0a5b213..f35a97b98b 100644 if (!this.hasPendingMessages) return; -@@ -319,7 +259,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -320,7 +262,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._messageQueue.shift(); this._queueMessageTimeout(); } else { @@ -5342,7 +5344,7 @@ index cea0a5b213..f35a97b98b 100644 } return GLib.SOURCE_REMOVE; -@@ -349,7 +289,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -350,7 +292,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } _clearMessageQueue() { @@ -5351,7 +5353,7 @@ index cea0a5b213..f35a97b98b 100644 if (this._messageQueueTimeoutId !== 0) { GLib.source_remove(this._messageQueueTimeoutId); -@@ -358,485 +298,142 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -359,488 +301,142 @@ export class ShellUserVerifier extends Signals.EventEmitter { this.emit('show-message', null, null, MessageType.NONE); } @@ -5457,6 +5459,8 @@ index cea0a5b213..f35a97b98b 100644 - this._clearUserVerifier(); - this._userVerifier = await this._client.open_reauthentication_channel( - userName, this._cancellable); +- this._userVerifier.get_connection().connectObject('closed', +- () => this.clear(), this); - } catch (e) { - if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) - return; @@ -5516,6 +5520,8 @@ index cea0a5b213..f35a97b98b 100644 - this._clearUserVerifier(); - this._userVerifier = - await this._client.get_user_verifier(this._cancellable); +- this._userVerifier.get_connection().connectObject('closed', +- () => this.clear(), this); + if (this._client.get_user_verifier_choice_list) + proxies.userVerifierChoiceList = await this._client.get_user_verifier_choice_list(); + if (this._client.get_user_verifier_custom_json) @@ -5922,13 +5928,12 @@ index cea0a5b213..f35a97b98b 100644 + await this._handlePendingMessages(); + waiter.resolve(); } catch (e) { -- if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) -- logError(e); +- logErrorUnlessCancelled(e); + waiter.reject(e); } } -@@ -855,47 +452,4 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -859,47 +455,4 @@ export class ShellUserVerifier extends Signals.EventEmitter { }); }); } @@ -6017,10 +6022,10 @@ index 8be425615d..782fed0d11 100644 js/gdm/util.js js/misc/breakManager.js -- -2.51.0 +2.53.0 -From a1b03e73f5e8ee27237b929570046161d8140eea Mon Sep 17 00:00:00 2001 +From 682906910fb06886e6d8af6dcf8707f93189a4d3 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 6 Feb 2024 14:09:34 -0500 Subject: [PATCH 24/30] gdm: Add authServicesSwitchable @@ -6235,7 +6240,7 @@ index 0000000000..4913cb2f41 + } +}); diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index b8cab9c3e3..1e601b6c15 100644 +index 70c461f3a6..c7bed1afaf 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -451,7 +451,10 @@ export const LoginDialog = GObject.registerClass({ @@ -6251,7 +6256,7 @@ index b8cab9c3e3..1e601b6c15 100644 } diff --git a/js/gdm/util.js b/js/gdm/util.js -index f35a97b98b..d94f4de897 100644 +index 4c95fd0b6f..6ddd16ef6f 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -8,6 +8,7 @@ import * as Const from './const.js'; @@ -6270,7 +6275,7 @@ index f35a97b98b..d94f4de897 100644 export const BANNER_MESSAGE_KEY = 'banner-message-enable'; export const BANNER_MESSAGE_SOURCE_KEY = 'banner-message-source'; export const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text'; -@@ -146,6 +148,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -148,6 +150,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { try { const proxies = await this._getUserVerifierProxies(userName); @@ -6278,7 +6283,7 @@ index f35a97b98b..d94f4de897 100644 await this._authServicesLegacy?.beginVerification(userName, proxies); this._userVerifier = proxies.userVerifier; } catch (e) { -@@ -157,14 +160,17 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -159,14 +162,17 @@ export class ShellUserVerifier extends Signals.EventEmitter { } selectMechanism(mechanism) { @@ -6298,7 +6303,7 @@ index f35a97b98b..d94f4de897 100644 this._authServicesLegacy?.reset(); this._userVerifier?.call_cancel_sync(null); -@@ -173,6 +179,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -175,6 +181,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } cancel() { @@ -6306,7 +6311,7 @@ index f35a97b98b..d94f4de897 100644 this._authServicesLegacy?.cancel(); this._userVerifier?.call_cancel_sync(null); -@@ -181,6 +188,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -183,6 +190,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { } clear() { @@ -6314,7 +6319,7 @@ index f35a97b98b..d94f4de897 100644 this._authServicesLegacy?.clear(); this._clearMessageQueue(); -@@ -199,10 +207,12 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -201,10 +209,12 @@ export class ShellUserVerifier extends Signals.EventEmitter { } selectChoice(serviceName, key) { @@ -6327,7 +6332,7 @@ index f35a97b98b..d94f4de897 100644 this._authServicesLegacy?.answerQuery(serviceName, answer); } -@@ -367,10 +377,15 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -370,10 +380,15 @@ export class ShellUserVerifier extends Signals.EventEmitter { if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) enabledRoles.push(Const.FINGERPRINT_ROLE_NAME); @@ -6344,7 +6349,7 @@ index f35a97b98b..d94f4de897 100644 this._createAuthServices(); } -@@ -384,20 +399,30 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -387,20 +402,30 @@ export class ShellUserVerifier extends Signals.EventEmitter { allowedFailures: this.allowedFailures, reauthOnly: this._reauthOnly, }; @@ -6377,7 +6382,7 @@ index f35a97b98b..d94f4de897 100644 authServices?.connectObject( 'ask-question', (_, ...args) => this.emit('ask-question', ...args), 'queue-message', (_, ...args) => this._queueMessage(...args), -@@ -419,9 +444,13 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -422,9 +447,13 @@ export class ShellUserVerifier extends Signals.EventEmitter { } _onMechanismsChanged() { @@ -6430,10 +6435,10 @@ index 782fed0d11..6c4ed8012e 100644 js/gdm/util.js js/misc/breakManager.js -- -2.51.0 +2.53.0 -From 16d03415a584aba741ce28696a52e46d98f59e1e Mon Sep 17 00:00:00 2001 +From 1c88e0f7cb77668dd0104ca1760fb8d89d2cdd3e Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 12 Nov 2025 17:25:33 +0100 Subject: [PATCH 25/30] authServicesSwitchable: Allow resetting expired @@ -6513,10 +6518,10 @@ index 4913cb2f41..48a0be4433 100644 if (serviceName !== this._selectedMechanism?.serviceName) return; -- -2.51.0 +2.53.0 -From 24c428a9d667b7592fe13d43708f9d77f2a8cfd1 Mon Sep 17 00:00:00 2001 +From 2945dc7c87a2be9fdf89af9e8ba730f0e394d4d7 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Thu, 21 Aug 2025 22:25:02 +0200 Subject: [PATCH 26/30] gdm: Allow starting authServicesLegacy as fallback @@ -6749,10 +6754,10 @@ index 48a0be4433..e2be3d3133 100644 const {serviceName, prompt} = this._selectedMechanism; diff --git a/js/gdm/util.js b/js/gdm/util.js -index d94f4de897..b088ef20ce 100644 +index 6ddd16ef6f..a18f61c64b 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -191,6 +191,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -193,6 +193,11 @@ export class ShellUserVerifier extends Signals.EventEmitter { this._authServicesSwitchable?.clear(); this._authServicesLegacy?.clear(); @@ -6764,7 +6769,7 @@ index d94f4de897..b088ef20ce 100644 this._clearMessageQueue(); this._cancellable?.cancel(); -@@ -400,10 +405,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -403,10 +408,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { reauthOnly: this._reauthOnly, }; if (this._switchableAuthenticationEnabled && @@ -6781,7 +6786,7 @@ index d94f4de897..b088ef20ce 100644 this._connectAuthServices(); } -@@ -444,6 +453,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -447,6 +456,9 @@ export class ShellUserVerifier extends Signals.EventEmitter { } _onMechanismsChanged() { @@ -6791,7 +6796,7 @@ index d94f4de897..b088ef20ce 100644 const mechanismsSwitchable = this._authServicesSwitchable?.enabledMechanisms ?? []; const mechanismsLegacy = this._authServicesLegacy?.enabledMechanisms ?? []; const mechanisms = [...mechanismsSwitchable, ...mechanismsLegacy]; -@@ -457,6 +469,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -460,6 +472,14 @@ export class ShellUserVerifier extends Signals.EventEmitter { this.emit('mechanisms-changed', mechanisms, selectedMechanism); } @@ -6807,10 +6812,10 @@ index d94f4de897..b088ef20ce 100644 try { await this._handlePendingMessages(); -- -2.51.0 +2.53.0 -From bab609836db76021de1e9c75aa8435c2ae379c6f Mon Sep 17 00:00:00 2001 +From eb15295260ad5c9e84b450f3184ff4e041629ba4 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 6 Feb 2024 14:18:24 -0500 Subject: [PATCH 27/30] gdm: Add support for Web Login in @@ -6970,7 +6975,7 @@ index 58c2ed495c..c591edd940 100644 + } +} diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 57b0ed3aeb..3f4878915d 100644 +index 10598e5c08..b2ad9098ce 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -14,6 +14,7 @@ import * as GdmUtil from './util.js'; @@ -7321,7 +7326,7 @@ index 2f37446c8a..e8ca48625a 100644 export const PASSWORD_SERVICE_NAME = 'gdm-password'; export const SMARTCARD_SERVICE_NAME = 'gdm-smartcard'; diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 1e601b6c15..927ed32d65 100644 +index c7bed1afaf..13637cea40 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -742,7 +742,10 @@ export const LoginDialog = GObject.registerClass({ @@ -7337,7 +7342,7 @@ index 1e601b6c15..927ed32d65 100644 } diff --git a/js/gdm/util.js b/js/gdm/util.js -index b088ef20ce..7c54009763 100644 +index a18f61c64b..be0b77f4ca 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -17,6 +17,7 @@ export const PASSWORD_AUTHENTICATION_KEY = 'enable-password-authentication'; @@ -7348,7 +7353,7 @@ index b088ef20ce..7c54009763 100644 export const BANNER_MESSAGE_KEY = 'banner-message-enable'; export const BANNER_MESSAGE_SOURCE_KEY = 'banner-message-source'; export const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text'; -@@ -91,6 +92,7 @@ export function isSelectable(mechanism) { +@@ -93,6 +94,7 @@ export function isSelectable(mechanism) { switch (mechanism.role) { case Const.PASSWORD_ROLE_NAME: case Const.SMARTCARD_ROLE_NAME: @@ -7356,7 +7361,7 @@ index b088ef20ce..7c54009763 100644 return true; case Const.FINGERPRINT_ROLE_NAME: return false; -@@ -381,6 +383,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -384,6 +386,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { enabledRoles.push(Const.SMARTCARD_ROLE_NAME); if (this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) enabledRoles.push(Const.FINGERPRINT_ROLE_NAME); @@ -7365,7 +7370,7 @@ index b088ef20ce..7c54009763 100644 const switchableAuthentication = this._settings.get_boolean(SWITCHABLE_AUTHENTICATION_KEY); -@@ -443,6 +447,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -446,6 +450,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { 'reset', (_, ...args) => this.emit('reset', ...args), 'show-choice-list', (_, ...args) => this.emit('show-choice-list', ...args), 'mechanisms-changed', (_, ...args) => this._onMechanismsChanged(...args), @@ -7882,10 +7887,10 @@ index 6c4ed8012e..12001308f3 100644 js/misc/brightnessManager.js js/misc/systemActions.js -- -2.51.0 +2.53.0 -From fa64ce0ce62b0e977301e07eee8277d417f47cd9 Mon Sep 17 00:00:00 2001 +From 949d002a5b8c51123efe21bfbab964cfe911ad36 Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Tue, 14 Jan 2025 07:31:59 -0500 Subject: [PATCH 28/30] gdm: Add support for Smartcard in @@ -8056,10 +8061,10 @@ index 51471e51d4..3eabd2f3be 100644 token.connectObject('g-properties-changed', (proxy, properties) => { -- -2.51.0 +2.53.0 -From 1be13c51125edb5ede37f0b2b5fd03beca173ce3 Mon Sep 17 00:00:00 2001 +From 321cb17c87a686820e44abfaafb358e973055d1d Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Mon, 15 Sep 2025 16:36:42 +0200 Subject: [PATCH 29/30] gdm: Add support for Passkey in authServicesSwitchable @@ -8242,7 +8247,7 @@ index e8ca48625a..7c48599e64 100644 export const PASSWORD_SERVICE_NAME = 'gdm-password'; diff --git a/js/gdm/util.js b/js/gdm/util.js -index 7c54009763..8b999c363f 100644 +index be0b77f4ca..71e28c660e 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -16,6 +16,7 @@ export const LOGIN_SCREEN_SCHEMA = 'org.gnome.login-screen'; @@ -8253,7 +8258,7 @@ index 7c54009763..8b999c363f 100644 export const SWITCHABLE_AUTHENTICATION_KEY = 'enable-switchable-authentication'; export const WEB_AUTHENTICATION_KEY = 'enable-web-authentication'; export const BANNER_MESSAGE_KEY = 'banner-message-enable'; -@@ -92,6 +93,7 @@ export function isSelectable(mechanism) { +@@ -94,6 +95,7 @@ export function isSelectable(mechanism) { switch (mechanism.role) { case Const.PASSWORD_ROLE_NAME: case Const.SMARTCARD_ROLE_NAME: @@ -8261,7 +8266,7 @@ index 7c54009763..8b999c363f 100644 case Const.WEB_LOGIN_ROLE_NAME: return true; case Const.FINGERPRINT_ROLE_NAME: -@@ -381,6 +383,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { +@@ -384,6 +386,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { enabledRoles.push(Const.PASSWORD_ROLE_NAME); if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) enabledRoles.push(Const.SMARTCARD_ROLE_NAME); @@ -8284,10 +8289,10 @@ index 0bf375ad18..e506acfad8 100644 text = _('Swipe up'); else -- -2.51.0 +2.53.0 -From 67db1e0773543b39b6670cbb4759ba2b8f0f0657 Mon Sep 17 00:00:00 2001 +From 681639f743087f8b4fca5b302f3a0e2e3bd7b50d Mon Sep 17 00:00:00 2001 From: Joan Torres Lopez Date: Wed, 24 Dec 2025 11:28:39 +0100 Subject: [PATCH 30/30] gdm: Add extra fix remove logErrorUnlessCancelled @@ -8352,5 +8357,5 @@ index 2da29582f3..5a864587dc 100644 } -- -2.51.0 +2.53.0 diff --git a/0001-gdm-util-Set-minimum-display-time-for-authentication.patch b/0001-gdm-util-Set-minimum-display-time-for-authentication.patch deleted file mode 100644 index bd1ead0..0000000 --- a/0001-gdm-util-Set-minimum-display-time-for-authentication.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 72073e008f35f197201e6c38ab506fbe5973fbeb Mon Sep 17 00:00:00 2001 -From: Joan Torres Lopez -Date: Wed, 28 Jan 2026 18:01:26 +0100 -Subject: [PATCH] gdm/util: Set minimum display time for authentication - messages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Short messages like "PIN locked" were previously displayed for only -480ms (10 chars × 48ms), making them impossible to read. Ensure all -messages are shown for at least 2 seconds. - -Part-of: ---- - js/gdm/util.js | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 8b999c3..b79b6e7 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -29,7 +29,9 @@ export const LOGO_KEY = 'logo'; - export const DISABLE_USER_LIST_KEY = 'disable-user-list'; - - // Give user 48ms to read each character of a PAM message -+// or 2 seconds, whichever is longer - const USER_READ_TIME = 48; -+const USER_READ_TIME_MIN = 2000; - - /** - * Keep messages in order by priority -@@ -232,7 +234,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { - const messageTimeMultiplier = GLib.getenv('GDM_MESSAGE_TIME_MULTIPLIER') ?? 1; - - // We probably could be smarter here -- return message.length * USER_READ_TIME * messageTimeMultiplier; -+ return Math.max(message.length * USER_READ_TIME * messageTimeMultiplier, -+ USER_READ_TIME_MIN); - } - - _finishMessageQueue() { --- -2.52.0 - diff --git a/3939-rediffed.patch b/3939-rediffed.patch deleted file mode 100644 index 4d2a9eb..0000000 --- a/3939-rediffed.patch +++ /dev/null @@ -1,57 +0,0 @@ -From a3d658851992b27ad2e0d8f9efeb680b4085d27f Mon Sep 17 00:00:00 2001 -From: Sebastian Keller -Date: Tue, 28 Oct 2025 23:22:26 +0100 -Subject: [PATCH 1/1] Revert "status/keyboard: Track - ::layout-layout-group-changed for changes" - -This reverts commit e8d73262c73246205e8f7887d99aeb2356cfa89e. - -The commit was causing freezes when changing layouts in some situations -and not all of these were adressed by f643915b, such as when switching -from the 3rd to the 4th layout using a xkb shortcut in the X11 session -with 4 layouts. - -It was also breaking the order of switching layouts using modifier-only -xkb shortcuts to switch to the next group, which it caused to advance -multiple groups because of the shortcut being handled via both -_modifiersSwitcher() and _layoutGroupChanged(). - -Further it was possible for _layoutGroupChanged() to trigger an error -due to the locale layout added by _buildGroupStrings() at the end of the -xkb layout list being accessible via the xkb shortcuts. That layout was -not present in _inputSources, leading to "is" being undefined. - -Reopens: https://gitlab.gnome.org/GNOME/mutter/-/issues/3926 -Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738 -Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3930 ---- - js/ui/status/keyboard.js | 7 ------- - 1 file changed, 7 deletions(-) - -diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js -index 88e6e93975..2f6773c8c0 100644 ---- a/js/ui/status/keyboard.js -+++ b/js/ui/status/keyboard.js -@@ -380,7 +380,6 @@ export class InputSourceManager extends Signals.EventEmitter { - this._ibusManager.connect('set-content-type', this._ibusSetContentType.bind(this)); - - global.display.connect('modifiers-accelerator-activated', this._modifiersSwitcher.bind(this)); -- global.backend.connect('keymap-layout-group-changed', this._layoutGroupChanged.bind(this)); - - this._sourcesPerWindow = false; - this._focusWindowNotifyId = 0; -@@ -429,12 +428,6 @@ export class InputSourceManager extends Signals.EventEmitter { - return true; - } - -- _layoutGroupChanged(backend, idx) { -- const is = this._inputSources[idx]; -- this._currentInputSourceChanged(is); -- this._keyboardManager.apply(is.xkbId); -- } -- - _switchInputSource(display, window, event, binding) { - if (this._mruSources.length < 2) - return; --- -GitLab diff --git a/gnome-shell.spec b/gnome-shell.spec index e83ad97..1fa7dfb 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -8,7 +8,7 @@ %endif Name: gnome-shell -Version: 49.1 +Version: 49.4 Release: %autorelease Summary: Window management and application launching for GNOME @@ -37,15 +37,6 @@ Patch: 0002-Reapply-main-Notify-gnome-session-when-we-re-ready.patch # downstream patch to stop trying on configuration errors. Patch: 0001-gdm-Work-around-failing-fingerprint-auth.patch -# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3939 -# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8738#note_2589102 -# https://discussion.fedoraproject.org/t/169999 -# Reverts some xkb changes that turned out to cause way more problems -# than they solved -# Rediffed on 49.1 - we include only the first revert, as the second -# commit was post-49.1 so there's nothing to revert -Patch: 3939-rediffed.patch - # GDM/Lock stuff Patch: 0001-screenShield-unblank-when-inserting-smartcard.patch Patch: enforce-smartcard-at-unlock.patch @@ -54,7 +45,6 @@ Patch: 0001-main-Register-session-with-GDM-on-startup.patch # Passwordless work # https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3212 Patch: 0001-Support-for-web-login-and-unified-auth-mechanism.patch -Patch: 0001-gdm-util-Set-minimum-display-time-for-authentication.patch # Extensions Patch: 0001-extensionDownloader-Refuse-to-override-system-extens.patch diff --git a/sources b/sources index f141cd6..1231836 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-shell-49.1.tar.xz) = 0a729c35669780b9b45fbc22497e9ba5e8e6b3c636f87bf54e372f9f261e364bee04352cfdb90f34fb574fe3ee272b3b248d296751521151f43c670f7f1bd381 +SHA512 (gnome-shell-49.4.tar.xz) = f101a8f261f6e3ac9f2b08efad71fd6be85f3c7d9070c747e5b9420fa9faa9e86281f76774385807bd9b1ce100fc82b37fa646147e7a4003c7ce3f8cf66b5670