import CS gnome-shell-40.10-36.el9
This commit is contained in:
parent
ee26bb5bd9
commit
eaeb4a3700
@ -369,15 +369,15 @@ index 25b86880d..83a3bb09d 100644
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
const Realmd = imports.gdm.realmd;
|
||||
@@ -36,6 +37,7 @@ const UserWidget = imports.ui.userWidget;
|
||||
const _FADE_ANIMATION_TIME = 250;
|
||||
@@ -36,6 +38,7 @@ const _FADE_ANIMATION_TIME = 250;
|
||||
const _SCROLL_ANIMATION_TIME = 500;
|
||||
const _FIXED_TOP_ACTOR_HEIGHT = 300;
|
||||
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
||||
+const _CONFLICTING_SESSION_DIALOG_TIMEOUT = 60;
|
||||
const _PRIMARY_LOGIN_METHOD_SECTION_NAME = _('Login Options');
|
||||
const _SESSION_TYPE_SECTION_NAME = _('Session Type');
|
||||
|
||||
var UserListItem = GObject.registerClass({
|
||||
Signals: { 'activate': {} },
|
||||
@@ -1044,6 +1046,22 @@ var LoginDialog = GObject.registerClass({
|
||||
@@ -1077,6 +1079,22 @@ var LoginDialog = GObject.registerClass({
|
||||
});
|
||||
}
|
||||
|
||||
@ -400,7 +400,7 @@ index 25b86880d..83a3bb09d 100644
|
||||
_showConflictingSessionDialog(serviceName, conflictingSession) {
|
||||
let conflictingSessionDialog = new ConflictingSessionDialog(conflictingSession);
|
||||
|
||||
@@ -1063,6 +1081,17 @@ var LoginDialog = GObject.registerClass({
|
||||
@@ -1096,6 +1114,17 @@ var LoginDialog = GObject.registerClass({
|
||||
}
|
||||
}, conflictingSessionDialog);
|
||||
|
||||
@ -418,7 +418,7 @@ index 25b86880d..83a3bb09d 100644
|
||||
conflictingSessionDialog.open();
|
||||
}
|
||||
|
||||
@@ -1318,6 +1347,9 @@ var LoginDialog = GObject.registerClass({
|
||||
@@ -1362,6 +1391,9 @@ var LoginDialog = GObject.registerClass({
|
||||
|
||||
this._updateCancelButton();
|
||||
|
||||
|
||||
8807
SOURCES/0001-Support-for-web-login-and-unified-auth-mechanism.patch
Normal file
8807
SOURCES/0001-Support-for-web-login-and-unified-auth-mechanism.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,106 +3,138 @@ From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@redhat.com>
|
||||
Date: Tue, 8 Feb 2022 14:18:04 -0500
|
||||
|
||||
---
|
||||
data/theme/gnome-shell-high-contrast.css | 36 ++++++++++++++++++++++++
|
||||
data/theme/gnome-shell.css | 36 ++++++++++++++++++++++++
|
||||
2 files changed, 72 insertions(+)
|
||||
data/theme/gnome-shell-high-contrast.css | 268 ++++++++++++++++++++++-
|
||||
data/theme/gnome-shell.css | 268 ++++++++++++++++++++++-
|
||||
2 files changed, 524 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css
|
||||
index b73f407..90f363c 100644
|
||||
index b73f407..585d6c4 100644
|
||||
--- a/data/theme/gnome-shell-high-contrast.css
|
||||
+++ b/data/theme/gnome-shell-high-contrast.css
|
||||
@@ -1223,60 +1223,63 @@ StScrollBar {
|
||||
-panel-corner-border-color: transparent;
|
||||
-panel-corner-opacity: 1;
|
||||
transition-duration: 250ms; }
|
||||
#panel .panel-button {
|
||||
font-weight: bold;
|
||||
color: #ddd;
|
||||
-natural-hpadding: 12px;
|
||||
-minimum-hpadding: 6px;
|
||||
transition-duration: 150ms;
|
||||
border: 3px solid transparent;
|
||||
border-radius: 99px; }
|
||||
#panel .panel-button.clock-display .clock {
|
||||
transition-duration: 150ms;
|
||||
border: 3px solid transparent;
|
||||
@@ -173,7 +173,7 @@ StEntry {
|
||||
icon-size: 1.09em;
|
||||
padding: 0 4px; }
|
||||
StEntry StLabel.hint-text {
|
||||
- margin-left: 2px;
|
||||
+ margin-left: 8px;
|
||||
color: rgba(255, 255, 255, 0.7); }
|
||||
|
||||
/* Buttons */
|
||||
@@ -1237,9 +1237,9 @@ StScrollBar {
|
||||
border-radius: 99px; }
|
||||
#panel .panel-button:hover, #panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.2); }
|
||||
#panel .panel-button.clock-display:hover, #panel .panel-button.clock-display:active, #panel .panel-button.clock-display:overview, #panel .panel-button.clock-display:focus, #panel .panel-button.clock-display:checked {
|
||||
- #panel .panel-button.clock-display:hover, #panel .panel-button.clock-display:active, #panel .panel-button.clock-display:overview, #panel .panel-button.clock-display:focus, #panel .panel-button.clock-display:checked {
|
||||
+ #panel .panel-button:hover.clock-display, #panel .panel-button:active.clock-display, #panel .panel-button:overview.clock-display, #panel .panel-button:focus.clock-display, #panel .panel-button:checked.clock-display {
|
||||
box-shadow: none; }
|
||||
#panel .panel-button.clock-display:hover .clock, #panel .panel-button.clock-display:active .clock, #panel .panel-button.clock-display:overview .clock, #panel .panel-button.clock-display:focus .clock, #panel .panel-button.clock-display:checked .clock {
|
||||
- #panel .panel-button.clock-display:hover .clock, #panel .panel-button.clock-display:active .clock, #panel .panel-button.clock-display:overview .clock, #panel .panel-button.clock-display:focus .clock, #panel .panel-button.clock-display:checked .clock {
|
||||
+ #panel .panel-button:hover.clock-display .clock, #panel .panel-button:active.clock-display .clock, #panel .panel-button:overview.clock-display .clock, #panel .panel-button:focus.clock-display .clock, #panel .panel-button:checked.clock-display .clock {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.2); }
|
||||
#panel .panel-button .system-status-icon {
|
||||
icon-size: 1.09em;
|
||||
padding: 5px;
|
||||
margin: 0 4px; }
|
||||
#panel .panel-button .panel-status-indicators-box .system-status-icon,
|
||||
#panel .panel-button .panel-status-menu-box .system-status-icon {
|
||||
@@ -1250,13 +1250,16 @@ StScrollBar {
|
||||
margin: 0; }
|
||||
#panel .panel-button .app-menu-icon {
|
||||
-st-icon-style: symbolic; }
|
||||
- #panel #panelActivities.panel-button {
|
||||
+ #panel .panel-button .panel-logo-icon {
|
||||
+ padding-right: .4em;
|
||||
+ icon-size: 1em; }
|
||||
#panel #panelActivities.panel-button {
|
||||
+ #panel .panel-button#panelActivities {
|
||||
-natural-hpadding: 18px; }
|
||||
#panel.unlock-screen .panel-button:hover, #panel.unlock-screen .panel-button:active, #panel.unlock-screen .panel-button:overview, #panel.unlock-screen .panel-button:focus, #panel.unlock-screen .panel-button:checked, #panel.login-screen .panel-button:hover, #panel.login-screen .panel-button:active, #panel.login-screen .panel-button:overview, #panel.login-screen .panel-button:focus, #panel.login-screen .panel-button:checked, #panel:overview .panel-button:hover, #panel:overview .panel-button:active, #panel:overview .panel-button:overview, #panel:overview .panel-button:focus, #panel:overview .panel-button:checked {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15); }
|
||||
#panel.unlock-screen .panel-button.clock-display:hover, #panel.unlock-screen .panel-button.clock-display:active, #panel.unlock-screen .panel-button.clock-display:overview, #panel.unlock-screen .panel-button.clock-display:focus, #panel.unlock-screen .panel-button.clock-display:checked, #panel.login-screen .panel-button.clock-display:hover, #panel.login-screen .panel-button.clock-display:active, #panel.login-screen .panel-button.clock-display:overview, #panel.login-screen .panel-button.clock-display:focus, #panel.login-screen .panel-button.clock-display:checked, #panel:overview .panel-button.clock-display:hover, #panel:overview .panel-button.clock-display:active, #panel:overview .panel-button.clock-display:overview, #panel:overview .panel-button.clock-display:focus, #panel:overview .panel-button.clock-display:checked {
|
||||
- #panel.unlock-screen .panel-button.clock-display:hover, #panel.unlock-screen .panel-button.clock-display:active, #panel.unlock-screen .panel-button.clock-display:overview, #panel.unlock-screen .panel-button.clock-display:focus, #panel.unlock-screen .panel-button.clock-display:checked, #panel.login-screen .panel-button.clock-display:hover, #panel.login-screen .panel-button.clock-display:active, #panel.login-screen .panel-button.clock-display:overview, #panel.login-screen .panel-button.clock-display:focus, #panel.login-screen .panel-button.clock-display:checked, #panel:overview .panel-button.clock-display:hover, #panel:overview .panel-button.clock-display:active, #panel:overview .panel-button.clock-display:overview, #panel:overview .panel-button.clock-display:focus, #panel:overview .panel-button.clock-display:checked {
|
||||
+ #panel.unlock-screen .panel-button:hover.clock-display, #panel.unlock-screen .panel-button:active.clock-display, #panel.unlock-screen .panel-button:overview.clock-display, #panel.unlock-screen .panel-button:focus.clock-display, #panel.unlock-screen .panel-button:checked.clock-display, #panel.login-screen .panel-button:hover.clock-display, #panel.login-screen .panel-button:active.clock-display, #panel.login-screen .panel-button:overview.clock-display, #panel.login-screen .panel-button:focus.clock-display, #panel.login-screen .panel-button:checked.clock-display, #panel:overview .panel-button:hover.clock-display, #panel:overview .panel-button:active.clock-display, #panel:overview .panel-button:overview.clock-display, #panel:overview .panel-button:focus.clock-display, #panel:overview .panel-button:checked.clock-display {
|
||||
box-shadow: none; }
|
||||
#panel.unlock-screen .panel-button.clock-display:hover .clock, #panel.unlock-screen .panel-button.clock-display:active .clock, #panel.unlock-screen .panel-button.clock-display:overview .clock, #panel.unlock-screen .panel-button.clock-display:focus .clock, #panel.unlock-screen .panel-button.clock-display:checked .clock, #panel.login-screen .panel-button.clock-display:hover .clock, #panel.login-screen .panel-button.clock-display:active .clock, #panel.login-screen .panel-button.clock-display:overview .clock, #panel.login-screen .panel-button.clock-display:focus .clock, #panel.login-screen .panel-button.clock-display:checked .clock, #panel:overview .panel-button.clock-display:hover .clock, #panel:overview .panel-button.clock-display:active .clock, #panel:overview .panel-button.clock-display:overview .clock, #panel:overview .panel-button.clock-display:focus .clock, #panel:overview .panel-button.clock-display:checked .clock {
|
||||
- #panel.unlock-screen .panel-button.clock-display:hover .clock, #panel.unlock-screen .panel-button.clock-display:active .clock, #panel.unlock-screen .panel-button.clock-display:overview .clock, #panel.unlock-screen .panel-button.clock-display:focus .clock, #panel.unlock-screen .panel-button.clock-display:checked .clock, #panel.login-screen .panel-button.clock-display:hover .clock, #panel.login-screen .panel-button.clock-display:active .clock, #panel.login-screen .panel-button.clock-display:overview .clock, #panel.login-screen .panel-button.clock-display:focus .clock, #panel.login-screen .panel-button.clock-display:checked .clock, #panel:overview .panel-button.clock-display:hover .clock, #panel:overview .panel-button.clock-display:active .clock, #panel:overview .panel-button.clock-display:overview .clock, #panel:overview .panel-button.clock-display:focus .clock, #panel:overview .panel-button.clock-display:checked .clock {
|
||||
+ #panel.unlock-screen .panel-button:hover.clock-display .clock, #panel.unlock-screen .panel-button:active.clock-display .clock, #panel.unlock-screen .panel-button:overview.clock-display .clock, #panel.unlock-screen .panel-button:focus.clock-display .clock, #panel.unlock-screen .panel-button:checked.clock-display .clock, #panel.login-screen .panel-button:hover.clock-display .clock, #panel.login-screen .panel-button:active.clock-display .clock, #panel.login-screen .panel-button:overview.clock-display .clock, #panel.login-screen .panel-button:focus.clock-display .clock, #panel.login-screen .panel-button:checked.clock-display .clock, #panel:overview .panel-button:hover.clock-display .clock, #panel:overview .panel-button:active.clock-display .clock, #panel:overview .panel-button:overview.clock-display .clock, #panel:overview .panel-button:focus.clock-display .clock, #panel:overview .panel-button:checked.clock-display .clock {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15); }
|
||||
#panel .panel-status-indicators-box,
|
||||
#panel .panel-status-menu-box {
|
||||
spacing: 2px; }
|
||||
#panel .power-status.panel-status-indicators-box {
|
||||
spacing: 0; }
|
||||
#panel .screencast-indicator,
|
||||
#panel .remote-access-indicator {
|
||||
color: #f57900; }
|
||||
@@ -1943,6 +1946,13 @@ StScrollBar {
|
||||
border-radius: 8px;
|
||||
padding: 6px; }
|
||||
|
||||
#appMenu {
|
||||
spacing: 6px; }
|
||||
#appMenu .label-shadow {
|
||||
color: transparent; }
|
||||
|
||||
#appMenu .panel-status-menu-box {
|
||||
padding: 0 6px;
|
||||
spacing: 6px; }
|
||||
|
||||
/* Activities Ripple */
|
||||
.ripple-box {
|
||||
background-color: rgba(158, 196, 235, 0.3);
|
||||
box-shadow: 0 0 2px 2px #4a90d9;
|
||||
@@ -2039,74 +2042,107 @@ StScrollBar {
|
||||
width: 2.18em;
|
||||
+.qr-code {
|
||||
+ border-radius: 4px;
|
||||
+ border-width: 1em;
|
||||
+ background-color: #eeeeec;
|
||||
+ border-color: #eeeeec;
|
||||
+ color: #282828; }
|
||||
+
|
||||
/* Login Dialog */
|
||||
.login-dialog-banner-view {
|
||||
padding-top: 24px;
|
||||
@@ -2028,11 +2038,15 @@ StScrollBar {
|
||||
border-color: #184472;
|
||||
background-color: #184472;
|
||||
color: rgba(255, 255, 255, 0.7); }
|
||||
+ .login-dialog .next-button,
|
||||
.login-dialog .cancel-button,
|
||||
.login-dialog .switch-user-button,
|
||||
+ .login-dialog .login-dialog-auth-menu-button,
|
||||
.login-dialog .login-dialog-session-list-button,
|
||||
+ .unlock-dialog .next-button,
|
||||
.unlock-dialog .cancel-button,
|
||||
.unlock-dialog .switch-user-button,
|
||||
+ .unlock-dialog .login-dialog-auth-menu-button,
|
||||
.unlock-dialog .login-dialog-session-list-button {
|
||||
padding: 0;
|
||||
border-radius: 99px;
|
||||
@@ -2040,18 +2054,51 @@ StScrollBar {
|
||||
height: 2.18em;
|
||||
border-color: #202020;
|
||||
background-color: #202020; }
|
||||
+ .login-dialog .next-button StIcon,
|
||||
.login-dialog .cancel-button StIcon,
|
||||
.login-dialog .switch-user-button StIcon,
|
||||
+ .login-dialog .login-dialog-auth-menu-button StIcon,
|
||||
.login-dialog .login-dialog-session-list-button StIcon,
|
||||
+ .unlock-dialog .next-button StIcon,
|
||||
.unlock-dialog .cancel-button StIcon,
|
||||
.unlock-dialog .switch-user-button StIcon,
|
||||
+ .unlock-dialog .login-dialog-auth-menu-button StIcon,
|
||||
.unlock-dialog .login-dialog-session-list-button StIcon {
|
||||
icon-size: 1.09em; }
|
||||
+ .login-dialog .next-button,
|
||||
+ .unlock-dialog .next-button {
|
||||
+ background-color: transparent !important; }
|
||||
+ .login-dialog .switch-user-button,
|
||||
+ .unlock-dialog .switch-user-button {
|
||||
+ min-width: 8.5em;
|
||||
+ min-height: 2.5em;
|
||||
+ font-size: 10pt;
|
||||
+ font-weight: bold; }
|
||||
.login-dialog .caps-lock-warning-label,
|
||||
.login-dialog .login-dialog-message-warning,
|
||||
.unlock-dialog .caps-lock-warning-label,
|
||||
.unlock-dialog .login-dialog-message-warning {
|
||||
color: #eeeeec; }
|
||||
+ .login-dialog .login-dialog-prompt-layout.web-login-active,
|
||||
+ .unlock-dialog .login-dialog-prompt-layout.web-login-active {
|
||||
+ width: 34.5em; }
|
||||
+ .login-dialog .login-dialog-prompt-entry-area,
|
||||
+ .unlock-dialog .login-dialog-prompt-entry-area {
|
||||
+ margin: 0.5em 20px; }
|
||||
+ .login-dialog .login-dialog-prompt-entry,
|
||||
+ .unlock-dialog .login-dialog-prompt-entry {
|
||||
+ border-radius: 12px;
|
||||
+ padding-right: 2.5em; }
|
||||
+ .login-dialog .login-dialog-default-button-well,
|
||||
+ .unlock-dialog .login-dialog-default-button-well {
|
||||
+ margin-right: 0.4em; }
|
||||
+
|
||||
+.login-dialog-auth-menu-button-indicator-description {
|
||||
+ color: #eeeeec; }
|
||||
+
|
||||
+.login-dialog-bottom-button-group {
|
||||
+ padding: 32px;
|
||||
+ spacing: 16px; }
|
||||
|
||||
.login-dialog-logo-bin {
|
||||
padding: 24px 0px; }
|
||||
|
||||
.login-dialog-banner {
|
||||
color: #d6d6d1; }
|
||||
|
||||
.login-dialog-button-box {
|
||||
width: 23em;
|
||||
spacing: 5px; }
|
||||
|
||||
@@ -2066,6 +2113,10 @@ StScrollBar {
|
||||
.login-dialog-message {
|
||||
text-align: center; }
|
||||
|
||||
@ -113,172 +145,353 @@ index b73f407..90f363c 100644
|
||||
.login-dialog-user-selection-box {
|
||||
padding: 100px 0px; }
|
||||
|
||||
.login-dialog-not-listed-label {
|
||||
padding-left: 2px; }
|
||||
.login-dialog-not-listed-button:focus .login-dialog-not-listed-label, .login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
|
||||
color: #eeeeec; }
|
||||
|
||||
.login-dialog-not-listed-label {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
@@ -2080,6 +2131,140 @@ StScrollBar {
|
||||
color: #a6a69b;
|
||||
padding-top: 1em; }
|
||||
|
||||
+.login-dialog-auth-menu-button-popup {
|
||||
+ padding: 18px;
|
||||
+ margin-right: 12px; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section {
|
||||
+ padding-top: 6px; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section:first-child {
|
||||
+ padding-top: 0; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section-label {
|
||||
+ font-size: 10pt;
|
||||
+ font-weight: bold;
|
||||
+ color: #eeeeec; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-icon {
|
||||
+ color: #eeeeec;
|
||||
+ icon-size: 1.09em;
|
||||
+ 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: #eeeeec;
|
||||
+ font-size: 11pt;
|
||||
+ font-weight: bold; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-description {
|
||||
+ color: #eeeeec;
|
||||
+ font-size: 10pt; }
|
||||
+
|
||||
+.login-dialog-auth-menu-button-indicator {
|
||||
+ background-color: transparent !important;
|
||||
+ border-width: 0;
|
||||
+ margin-bottom: 32px;
|
||||
+ margin-left: 32px; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-icons {
|
||||
+ spacing: 18px; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-icons .login-dialog-auth-menu-button-indicator-icon {
|
||||
+ icon-size: 2em; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-description {
|
||||
+ font-size: 11pt;
|
||||
+ margin-left: 12px;
|
||||
+ min-width: 20em; }
|
||||
+
|
||||
+.login-dialog-button-box {
|
||||
+ height: 4em; }
|
||||
+
|
||||
+.login-dialog-auth-list-view {
|
||||
+ -st-vfade-offset: 1em; }
|
||||
+ -st-vfade-offset: 1em;
|
||||
+ max-height: 13em; }
|
||||
+
|
||||
+.login-dialog-auth-list {
|
||||
+ spacing: 6px;
|
||||
+ margin-left: 2em; }
|
||||
+ spacing: 9px;
|
||||
+ width: 23em;
|
||||
+ margin-left: 20px; }
|
||||
+
|
||||
+.login-dialog-auth-list-title {
|
||||
+ margin-left: 2em; }
|
||||
+
|
||||
+.login-dialog-auth-list-item {
|
||||
+.login-dialog .login-dialog-auth-list-title,
|
||||
+.login-dialog .login-dialog-auth-list-item {
|
||||
+ border-radius: 12px;
|
||||
+ padding: 6px;
|
||||
+ color: #a6a69b; }
|
||||
+ .login-dialog-auth-list-item:focus, .login-dialog-auth-list-item:selected {
|
||||
+ .login-dialog .login-dialog-auth-list-title:focus, .login-dialog .login-dialog-auth-list-title:selected,
|
||||
+ .login-dialog .login-dialog-auth-list-item:focus,
|
||||
+ .login-dialog .login-dialog-auth-list-item:selected {
|
||||
+ background-color: #215d9c;
|
||||
+ color: #ffffff; }
|
||||
+
|
||||
+.login-dialog-auth-list-label {
|
||||
+.login-dialog .login-dialog-auth-list-title {
|
||||
+ background-color: rgba(238, 238, 236, 0.03) !important;
|
||||
+ color: #eeeeec !important;
|
||||
+ padding: 6px;
|
||||
+ margin: 0.5em 20px; }
|
||||
+
|
||||
+.login-dialog .login-dialog-auth-list-item {
|
||||
+ min-height: 3em;
|
||||
+ padding: 9px;
|
||||
+ margin-bottom: 4px;
|
||||
+ background-color: rgba(238, 238, 236, 0.06); }
|
||||
+
|
||||
+.unlock-dialog .login-dialog-auth-list-item {
|
||||
+ border: none;
|
||||
+ color: #eeeeec;
|
||||
+ background-color: rgba(238, 238, 236, 0.06);
|
||||
+ border-radius: 12px;
|
||||
+ min-height: 3em;
|
||||
+ padding: 9px;
|
||||
+ margin-bottom: 4px; }
|
||||
+ .unlock-dialog .login-dialog-auth-list-item:hover, .unlock-dialog .login-dialog-auth-list-item:focus, .unlock-dialog .login-dialog-auth-list-item:selected {
|
||||
+ background-color: rgba(238, 238, 236, 0.16); }
|
||||
+ .unlock-dialog .login-dialog-auth-list-item:active {
|
||||
+ background-color: rgba(238, 238, 236, 0.22); }
|
||||
+
|
||||
+.unlock-dialog .login-dialog-auth-list-title {
|
||||
+ background-color: transparent !important;
|
||||
+ border: none;
|
||||
+ color: #eeeeec !important;
|
||||
+ padding: 6px; }
|
||||
+
|
||||
+.login-dialog-auth-list-title-label {
|
||||
+ font-size: 13pt;
|
||||
+ font-weight: bold;
|
||||
+ padding-left: 15px; }
|
||||
+ .login-dialog-auth-list-label:ltr {
|
||||
+ padding-left: 14px;
|
||||
+ text-align: left; }
|
||||
+ .login-dialog-auth-list-label:rtl {
|
||||
+ padding-right: 14px;
|
||||
+ text-align: right; }
|
||||
+ padding: 6px;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-title,
|
||||
+.login-dialog-auth-list-item-subtitle {
|
||||
+ font-size: 11pt;
|
||||
+ text-align: center;
|
||||
+ padding: 1.8px 0; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-title {
|
||||
+ color: #eeeeec;
|
||||
+ font-weight: bold; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-subtitle {
|
||||
+ color: #bebeb6;
|
||||
+ font-weight: 500; }
|
||||
+
|
||||
+.login-dialog-item-icon {
|
||||
+ width: 1.3em;
|
||||
+ height: 1.3em;
|
||||
+ color: #eeeeec;
|
||||
+ padding: 4.2px 6px;
|
||||
+ border-radius: 8px; }
|
||||
+ .login-dialog-item-icon:hover {
|
||||
+ background-color: #282828; }
|
||||
+ .login-dialog-item-icon-popup.popup-menu {
|
||||
+ min-width: 0; }
|
||||
+ .login-dialog-item-icon-popup-box {
|
||||
+ padding: 6px 0; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels {
|
||||
+ spacing: 3px;
|
||||
+ font-weight: bold;
|
||||
+ text-align: center; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels > :first-child {
|
||||
+ color: #b3b3b3;
|
||||
+ font-weight: 500; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels > :last-child {
|
||||
+ color: #fff; }
|
||||
+
|
||||
.login-dialog-user-list-view {
|
||||
-st-vfade-offset: 1em; }
|
||||
|
||||
.login-dialog-user-list {
|
||||
spacing: 12px;
|
||||
width: 23em; }
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:selected {
|
||||
background-color: #215d9c;
|
||||
color: #ffffff; }
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
|
||||
border-right: 2px solid #215d9c; }
|
||||
|
||||
.login-dialog-user-list-item {
|
||||
border-radius: 12px;
|
||||
padding: 6px;
|
||||
color: #a6a69b; }
|
||||
.login-dialog-user-list-item:ltr .user-widget {
|
||||
padding-right: 1em; }
|
||||
.login-dialog-user-list-item:rtl .user-widget {
|
||||
padding-left: 1em; }
|
||||
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
|
||||
height: 2px;
|
||||
margin-top: 6px;
|
||||
background-color: #eeeeec; }
|
||||
.login-dialog-user-list-item:focus .login-dialog-timed-login-indicator {
|
||||
background-color: #ffffff; }
|
||||
|
||||
.user-widget-label {
|
||||
color: #eeeeec; }
|
||||
@@ -2145,6 +2330,77 @@ StScrollBar {
|
||||
font-size: 12pt;
|
||||
padding-top: 1em; }
|
||||
|
||||
+.web-login-spinner {
|
||||
+ background-color: rgba(0, 0, 0, 0.5);
|
||||
+ border: 5px rgba(0, 0, 0, 0);
|
||||
+ border-radius: 50px; }
|
||||
+
|
||||
+.web-login-title-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #a6a69b;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-url-label {
|
||||
+ font-size: 11pt;
|
||||
+ font-family: monospace;
|
||||
+ color: #eeeeec;
|
||||
+ text-align: center; }
|
||||
+ .web-login-url-label.web-login-url-label-long {
|
||||
+ font-size: 9pt; }
|
||||
+
|
||||
+.web-login-code-title-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #eeeeec;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-code-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #eeeeec;
|
||||
+ font-weight: bold;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-prompt {
|
||||
+ padding-top: 6px;
|
||||
+ padding-bottom: 6px;
|
||||
+ padding-left: 27px;
|
||||
+ padding-right: 27px;
|
||||
+ spacing: 1.75em; }
|
||||
+
|
||||
+.web-login-button-label {
|
||||
+ font-size: 13pt;
|
||||
+ color: #eeeeec;
|
||||
+ min-width: 12em;
|
||||
+ text-align: center;
|
||||
+ font-weight: bold;
|
||||
+ padding-bottom: 0.1em; }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button,
|
||||
+.login-dialog .web-login-prompt-button,
|
||||
+.unlock-dialog .web-login-intro-button,
|
||||
+.unlock-dialog .web-login-prompt-button {
|
||||
+ border-radius: 32px !important;
|
||||
+ padding: 9px 18px;
|
||||
+ background-color: rgba(238, 238, 236, 0.06); }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button,
|
||||
+.unlock-dialog .web-login-intro-button {
|
||||
+ width: 10em; }
|
||||
+
|
||||
+.login-dialog .web-login-prompt-button,
|
||||
+.unlock-dialog .web-login-prompt-button {
|
||||
+ width: 7em;
|
||||
+ margin: 24px 8px; }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button:hover, .login-dialog .web-login-intro-button:focus,
|
||||
+.login-dialog .web-login-prompt-button:hover,
|
||||
+.login-dialog .web-login-prompt-button:focus {
|
||||
+ background-color: #215d9c; }
|
||||
+
|
||||
+.unlock-dialog .web-login-intro-button:hover, .unlock-dialog .web-login-intro-button:focus,
|
||||
+.unlock-dialog .web-login-prompt-button:hover,
|
||||
+.unlock-dialog .web-login-prompt-button:focus {
|
||||
+ background-color: rgba(238, 238, 236, 0.16); }
|
||||
+
|
||||
/* Screen Shield */
|
||||
.unlock-dialog-clock {
|
||||
color: white;
|
||||
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
|
||||
index f93819b..d3d7fc8 100644
|
||||
index f93819b..ff0c587 100644
|
||||
--- a/data/theme/gnome-shell.css
|
||||
+++ b/data/theme/gnome-shell.css
|
||||
@@ -1223,60 +1223,63 @@ StScrollBar {
|
||||
-panel-corner-border-color: transparent;
|
||||
-panel-corner-opacity: 1;
|
||||
transition-duration: 250ms; }
|
||||
#panel .panel-button {
|
||||
font-weight: bold;
|
||||
color: #ddd;
|
||||
-natural-hpadding: 12px;
|
||||
-minimum-hpadding: 6px;
|
||||
transition-duration: 150ms;
|
||||
border: 3px solid transparent;
|
||||
border-radius: 99px; }
|
||||
#panel .panel-button.clock-display .clock {
|
||||
transition-duration: 150ms;
|
||||
border: 3px solid transparent;
|
||||
@@ -173,7 +173,7 @@ StEntry {
|
||||
icon-size: 1.09em;
|
||||
padding: 0 4px; }
|
||||
StEntry StLabel.hint-text {
|
||||
- margin-left: 2px;
|
||||
+ margin-left: 8px;
|
||||
color: rgba(238, 238, 236, 0.7); }
|
||||
|
||||
/* Buttons */
|
||||
@@ -1237,9 +1237,9 @@ StScrollBar {
|
||||
border-radius: 99px; }
|
||||
#panel .panel-button:hover, #panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.2); }
|
||||
#panel .panel-button.clock-display:hover, #panel .panel-button.clock-display:active, #panel .panel-button.clock-display:overview, #panel .panel-button.clock-display:focus, #panel .panel-button.clock-display:checked {
|
||||
- #panel .panel-button.clock-display:hover, #panel .panel-button.clock-display:active, #panel .panel-button.clock-display:overview, #panel .panel-button.clock-display:focus, #panel .panel-button.clock-display:checked {
|
||||
+ #panel .panel-button:hover.clock-display, #panel .panel-button:active.clock-display, #panel .panel-button:overview.clock-display, #panel .panel-button:focus.clock-display, #panel .panel-button:checked.clock-display {
|
||||
box-shadow: none; }
|
||||
#panel .panel-button.clock-display:hover .clock, #panel .panel-button.clock-display:active .clock, #panel .panel-button.clock-display:overview .clock, #panel .panel-button.clock-display:focus .clock, #panel .panel-button.clock-display:checked .clock {
|
||||
- #panel .panel-button.clock-display:hover .clock, #panel .panel-button.clock-display:active .clock, #panel .panel-button.clock-display:overview .clock, #panel .panel-button.clock-display:focus .clock, #panel .panel-button.clock-display:checked .clock {
|
||||
+ #panel .panel-button:hover.clock-display .clock, #panel .panel-button:active.clock-display .clock, #panel .panel-button:overview.clock-display .clock, #panel .panel-button:focus.clock-display .clock, #panel .panel-button:checked.clock-display .clock {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.2); }
|
||||
#panel .panel-button .system-status-icon {
|
||||
icon-size: 1.09em;
|
||||
padding: 5px;
|
||||
margin: 0 4px; }
|
||||
#panel .panel-button .panel-status-indicators-box .system-status-icon,
|
||||
#panel .panel-button .panel-status-menu-box .system-status-icon {
|
||||
@@ -1250,13 +1250,16 @@ StScrollBar {
|
||||
margin: 0; }
|
||||
#panel .panel-button .app-menu-icon {
|
||||
-st-icon-style: symbolic; }
|
||||
- #panel #panelActivities.panel-button {
|
||||
+ #panel .panel-button .panel-logo-icon {
|
||||
+ padding-right: .4em;
|
||||
+ icon-size: 1em; }
|
||||
#panel #panelActivities.panel-button {
|
||||
+ #panel .panel-button#panelActivities {
|
||||
-natural-hpadding: 18px; }
|
||||
#panel.unlock-screen .panel-button:hover, #panel.unlock-screen .panel-button:active, #panel.unlock-screen .panel-button:overview, #panel.unlock-screen .panel-button:focus, #panel.unlock-screen .panel-button:checked, #panel.login-screen .panel-button:hover, #panel.login-screen .panel-button:active, #panel.login-screen .panel-button:overview, #panel.login-screen .panel-button:focus, #panel.login-screen .panel-button:checked, #panel:overview .panel-button:hover, #panel:overview .panel-button:active, #panel:overview .panel-button:overview, #panel:overview .panel-button:focus, #panel:overview .panel-button:checked {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15); }
|
||||
#panel.unlock-screen .panel-button.clock-display:hover, #panel.unlock-screen .panel-button.clock-display:active, #panel.unlock-screen .panel-button.clock-display:overview, #panel.unlock-screen .panel-button.clock-display:focus, #panel.unlock-screen .panel-button.clock-display:checked, #panel.login-screen .panel-button.clock-display:hover, #panel.login-screen .panel-button.clock-display:active, #panel.login-screen .panel-button.clock-display:overview, #panel.login-screen .panel-button.clock-display:focus, #panel.login-screen .panel-button.clock-display:checked, #panel:overview .panel-button.clock-display:hover, #panel:overview .panel-button.clock-display:active, #panel:overview .panel-button.clock-display:overview, #panel:overview .panel-button.clock-display:focus, #panel:overview .panel-button.clock-display:checked {
|
||||
- #panel.unlock-screen .panel-button.clock-display:hover, #panel.unlock-screen .panel-button.clock-display:active, #panel.unlock-screen .panel-button.clock-display:overview, #panel.unlock-screen .panel-button.clock-display:focus, #panel.unlock-screen .panel-button.clock-display:checked, #panel.login-screen .panel-button.clock-display:hover, #panel.login-screen .panel-button.clock-display:active, #panel.login-screen .panel-button.clock-display:overview, #panel.login-screen .panel-button.clock-display:focus, #panel.login-screen .panel-button.clock-display:checked, #panel:overview .panel-button.clock-display:hover, #panel:overview .panel-button.clock-display:active, #panel:overview .panel-button.clock-display:overview, #panel:overview .panel-button.clock-display:focus, #panel:overview .panel-button.clock-display:checked {
|
||||
+ #panel.unlock-screen .panel-button:hover.clock-display, #panel.unlock-screen .panel-button:active.clock-display, #panel.unlock-screen .panel-button:overview.clock-display, #panel.unlock-screen .panel-button:focus.clock-display, #panel.unlock-screen .panel-button:checked.clock-display, #panel.login-screen .panel-button:hover.clock-display, #panel.login-screen .panel-button:active.clock-display, #panel.login-screen .panel-button:overview.clock-display, #panel.login-screen .panel-button:focus.clock-display, #panel.login-screen .panel-button:checked.clock-display, #panel:overview .panel-button:hover.clock-display, #panel:overview .panel-button:active.clock-display, #panel:overview .panel-button:overview.clock-display, #panel:overview .panel-button:focus.clock-display, #panel:overview .panel-button:checked.clock-display {
|
||||
box-shadow: none; }
|
||||
#panel.unlock-screen .panel-button.clock-display:hover .clock, #panel.unlock-screen .panel-button.clock-display:active .clock, #panel.unlock-screen .panel-button.clock-display:overview .clock, #panel.unlock-screen .panel-button.clock-display:focus .clock, #panel.unlock-screen .panel-button.clock-display:checked .clock, #panel.login-screen .panel-button.clock-display:hover .clock, #panel.login-screen .panel-button.clock-display:active .clock, #panel.login-screen .panel-button.clock-display:overview .clock, #panel.login-screen .panel-button.clock-display:focus .clock, #panel.login-screen .panel-button.clock-display:checked .clock, #panel:overview .panel-button.clock-display:hover .clock, #panel:overview .panel-button.clock-display:active .clock, #panel:overview .panel-button.clock-display:overview .clock, #panel:overview .panel-button.clock-display:focus .clock, #panel:overview .panel-button.clock-display:checked .clock {
|
||||
- #panel.unlock-screen .panel-button.clock-display:hover .clock, #panel.unlock-screen .panel-button.clock-display:active .clock, #panel.unlock-screen .panel-button.clock-display:overview .clock, #panel.unlock-screen .panel-button.clock-display:focus .clock, #panel.unlock-screen .panel-button.clock-display:checked .clock, #panel.login-screen .panel-button.clock-display:hover .clock, #panel.login-screen .panel-button.clock-display:active .clock, #panel.login-screen .panel-button.clock-display:overview .clock, #panel.login-screen .panel-button.clock-display:focus .clock, #panel.login-screen .panel-button.clock-display:checked .clock, #panel:overview .panel-button.clock-display:hover .clock, #panel:overview .panel-button.clock-display:active .clock, #panel:overview .panel-button.clock-display:overview .clock, #panel:overview .panel-button.clock-display:focus .clock, #panel:overview .panel-button.clock-display:checked .clock {
|
||||
+ #panel.unlock-screen .panel-button:hover.clock-display .clock, #panel.unlock-screen .panel-button:active.clock-display .clock, #panel.unlock-screen .panel-button:overview.clock-display .clock, #panel.unlock-screen .panel-button:focus.clock-display .clock, #panel.unlock-screen .panel-button:checked.clock-display .clock, #panel.login-screen .panel-button:hover.clock-display .clock, #panel.login-screen .panel-button:active.clock-display .clock, #panel.login-screen .panel-button:overview.clock-display .clock, #panel.login-screen .panel-button:focus.clock-display .clock, #panel.login-screen .panel-button:checked.clock-display .clock, #panel:overview .panel-button:hover.clock-display .clock, #panel:overview .panel-button:active.clock-display .clock, #panel:overview .panel-button:overview.clock-display .clock, #panel:overview .panel-button:focus.clock-display .clock, #panel:overview .panel-button:checked.clock-display .clock {
|
||||
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.15); }
|
||||
#panel .panel-status-indicators-box,
|
||||
#panel .panel-status-menu-box {
|
||||
spacing: 2px; }
|
||||
#panel .power-status.panel-status-indicators-box {
|
||||
spacing: 0; }
|
||||
#panel .screencast-indicator,
|
||||
#panel .remote-access-indicator {
|
||||
color: #f57900; }
|
||||
@@ -1943,6 +1946,13 @@ StScrollBar {
|
||||
border-radius: 8px;
|
||||
padding: 6px; }
|
||||
|
||||
#appMenu {
|
||||
spacing: 6px; }
|
||||
#appMenu .label-shadow {
|
||||
color: transparent; }
|
||||
|
||||
#appMenu .panel-status-menu-box {
|
||||
padding: 0 6px;
|
||||
spacing: 6px; }
|
||||
|
||||
/* Activities Ripple */
|
||||
.ripple-box {
|
||||
background-color: rgba(188, 214, 246, 0.3);
|
||||
box-shadow: 0 0 2px 2px #629fea;
|
||||
@@ -2039,74 +2042,107 @@ StScrollBar {
|
||||
width: 2.18em;
|
||||
+.qr-code {
|
||||
+ border-radius: 4px;
|
||||
+ border-width: 1em;
|
||||
+ background-color: #eeeeec;
|
||||
+ border-color: #eeeeec;
|
||||
+ color: #282828; }
|
||||
+
|
||||
/* Login Dialog */
|
||||
.login-dialog-banner-view {
|
||||
padding-top: 24px;
|
||||
@@ -2028,11 +2038,15 @@ StScrollBar {
|
||||
border-color: #15539e;
|
||||
background-color: #15539e;
|
||||
color: rgba(255, 255, 255, 0.7); }
|
||||
+ .login-dialog .next-button,
|
||||
.login-dialog .cancel-button,
|
||||
.login-dialog .switch-user-button,
|
||||
+ .login-dialog .login-dialog-auth-menu-button,
|
||||
.login-dialog .login-dialog-session-list-button,
|
||||
+ .unlock-dialog .next-button,
|
||||
.unlock-dialog .cancel-button,
|
||||
.unlock-dialog .switch-user-button,
|
||||
+ .unlock-dialog .login-dialog-auth-menu-button,
|
||||
.unlock-dialog .login-dialog-session-list-button {
|
||||
padding: 0;
|
||||
border-radius: 99px;
|
||||
@@ -2040,18 +2054,51 @@ StScrollBar {
|
||||
height: 2.18em;
|
||||
border-color: #202020;
|
||||
background-color: #202020; }
|
||||
+ .login-dialog .next-button StIcon,
|
||||
.login-dialog .cancel-button StIcon,
|
||||
.login-dialog .switch-user-button StIcon,
|
||||
+ .login-dialog .login-dialog-auth-menu-button StIcon,
|
||||
.login-dialog .login-dialog-session-list-button StIcon,
|
||||
+ .unlock-dialog .next-button StIcon,
|
||||
.unlock-dialog .cancel-button StIcon,
|
||||
.unlock-dialog .switch-user-button StIcon,
|
||||
+ .unlock-dialog .login-dialog-auth-menu-button StIcon,
|
||||
.unlock-dialog .login-dialog-session-list-button StIcon {
|
||||
icon-size: 1.09em; }
|
||||
+ .login-dialog .next-button,
|
||||
+ .unlock-dialog .next-button {
|
||||
+ background-color: transparent !important; }
|
||||
+ .login-dialog .switch-user-button,
|
||||
+ .unlock-dialog .switch-user-button {
|
||||
+ min-width: 8.5em;
|
||||
+ min-height: 2.5em;
|
||||
+ font-size: 10pt;
|
||||
+ font-weight: bold; }
|
||||
.login-dialog .caps-lock-warning-label,
|
||||
.login-dialog .login-dialog-message-warning,
|
||||
.unlock-dialog .caps-lock-warning-label,
|
||||
.unlock-dialog .login-dialog-message-warning {
|
||||
color: #eeeeec; }
|
||||
+ .login-dialog .login-dialog-prompt-layout.web-login-active,
|
||||
+ .unlock-dialog .login-dialog-prompt-layout.web-login-active {
|
||||
+ width: 34.5em; }
|
||||
+ .login-dialog .login-dialog-prompt-entry-area,
|
||||
+ .unlock-dialog .login-dialog-prompt-entry-area {
|
||||
+ margin: 0.5em 20px; }
|
||||
+ .login-dialog .login-dialog-prompt-entry,
|
||||
+ .unlock-dialog .login-dialog-prompt-entry {
|
||||
+ border-radius: 12px;
|
||||
+ padding-right: 2.5em; }
|
||||
+ .login-dialog .login-dialog-default-button-well,
|
||||
+ .unlock-dialog .login-dialog-default-button-well {
|
||||
+ margin-right: 0.4em; }
|
||||
+
|
||||
+.login-dialog-auth-menu-button-indicator-description {
|
||||
+ color: #eeeeec; }
|
||||
+
|
||||
+.login-dialog-bottom-button-group {
|
||||
+ padding: 32px;
|
||||
+ spacing: 16px; }
|
||||
|
||||
.login-dialog-logo-bin {
|
||||
padding: 24px 0px; }
|
||||
|
||||
.login-dialog-banner {
|
||||
color: #d6d6d1; }
|
||||
|
||||
.login-dialog-button-box {
|
||||
width: 23em;
|
||||
spacing: 5px; }
|
||||
|
||||
@@ -2066,6 +2113,10 @@ StScrollBar {
|
||||
.login-dialog-message {
|
||||
text-align: center; }
|
||||
|
||||
@ -289,76 +502,225 @@ index f93819b..d3d7fc8 100644
|
||||
.login-dialog-user-selection-box {
|
||||
padding: 100px 0px; }
|
||||
|
||||
.login-dialog-not-listed-label {
|
||||
padding-left: 2px; }
|
||||
.login-dialog-not-listed-button:focus .login-dialog-not-listed-label, .login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
|
||||
color: #eeeeec; }
|
||||
|
||||
.login-dialog-not-listed-label {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
@@ -2080,6 +2131,140 @@ StScrollBar {
|
||||
color: #a6a69b;
|
||||
padding-top: 1em; }
|
||||
|
||||
+.login-dialog-auth-menu-button-popup {
|
||||
+ padding: 18px;
|
||||
+ margin-right: 12px; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section {
|
||||
+ padding-top: 6px; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section:first-child {
|
||||
+ padding-top: 0; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-section-label {
|
||||
+ font-size: 10pt;
|
||||
+ font-weight: bold;
|
||||
+ color: #eeeeec; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-icon {
|
||||
+ color: #eeeeec;
|
||||
+ icon-size: 1.09em;
|
||||
+ 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: #eeeeec;
|
||||
+ font-size: 11pt;
|
||||
+ font-weight: bold; }
|
||||
+ .login-dialog-auth-menu-button-popup .login-dialog-auth-menu-item-box-description {
|
||||
+ color: #eeeeec;
|
||||
+ font-size: 10pt; }
|
||||
+
|
||||
+.login-dialog-auth-menu-button-indicator {
|
||||
+ background-color: transparent !important;
|
||||
+ border-width: 0;
|
||||
+ margin-bottom: 32px;
|
||||
+ margin-left: 32px; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-icons {
|
||||
+ spacing: 18px; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-icons .login-dialog-auth-menu-button-indicator-icon {
|
||||
+ icon-size: 2em; }
|
||||
+ .login-dialog-auth-menu-button-indicator .login-dialog-auth-menu-button-indicator-description {
|
||||
+ font-size: 11pt;
|
||||
+ margin-left: 12px;
|
||||
+ min-width: 20em; }
|
||||
+
|
||||
+.login-dialog-button-box {
|
||||
+ height: 4em; }
|
||||
+
|
||||
+.login-dialog-auth-list-view {
|
||||
+ -st-vfade-offset: 1em; }
|
||||
+ -st-vfade-offset: 1em;
|
||||
+ max-height: 13em; }
|
||||
+
|
||||
+.login-dialog-auth-list {
|
||||
+ spacing: 6px;
|
||||
+ margin-left: 2em; }
|
||||
+ spacing: 9px;
|
||||
+ width: 23em;
|
||||
+ margin-left: 20px; }
|
||||
+
|
||||
+.login-dialog-auth-list-title {
|
||||
+ margin-left: 2em; }
|
||||
+
|
||||
+.login-dialog-auth-list-item {
|
||||
+.login-dialog .login-dialog-auth-list-title,
|
||||
+.login-dialog .login-dialog-auth-list-item {
|
||||
+ border-radius: 12px;
|
||||
+ padding: 6px;
|
||||
+ color: #a6a69b; }
|
||||
+ .login-dialog-auth-list-item:focus, .login-dialog-auth-list-item:selected {
|
||||
+ .login-dialog .login-dialog-auth-list-title:focus, .login-dialog .login-dialog-auth-list-title:selected,
|
||||
+ .login-dialog .login-dialog-auth-list-item:focus,
|
||||
+ .login-dialog .login-dialog-auth-list-item:selected {
|
||||
+ background-color: #1b6acb;
|
||||
+ color: #fff; }
|
||||
+
|
||||
+.login-dialog-auth-list-label {
|
||||
+.login-dialog .login-dialog-auth-list-title {
|
||||
+ background-color: rgba(238, 238, 236, 0.03) !important;
|
||||
+ color: #eeeeec !important;
|
||||
+ padding: 6px;
|
||||
+ margin: 0.5em 20px; }
|
||||
+
|
||||
+.login-dialog .login-dialog-auth-list-item {
|
||||
+ min-height: 3em;
|
||||
+ padding: 9px;
|
||||
+ margin-bottom: 4px;
|
||||
+ background-color: rgba(238, 238, 236, 0.06); }
|
||||
+
|
||||
+.unlock-dialog .login-dialog-auth-list-item {
|
||||
+ border: none;
|
||||
+ color: #eeeeec;
|
||||
+ background-color: rgba(238, 238, 236, 0.06);
|
||||
+ border-radius: 12px;
|
||||
+ min-height: 3em;
|
||||
+ padding: 9px;
|
||||
+ margin-bottom: 4px; }
|
||||
+ .unlock-dialog .login-dialog-auth-list-item:hover, .unlock-dialog .login-dialog-auth-list-item:focus, .unlock-dialog .login-dialog-auth-list-item:selected {
|
||||
+ background-color: rgba(238, 238, 236, 0.16); }
|
||||
+ .unlock-dialog .login-dialog-auth-list-item:active {
|
||||
+ background-color: rgba(238, 238, 236, 0.22); }
|
||||
+
|
||||
+.unlock-dialog .login-dialog-auth-list-title {
|
||||
+ background-color: transparent !important;
|
||||
+ border: none;
|
||||
+ color: #eeeeec !important;
|
||||
+ padding: 6px; }
|
||||
+
|
||||
+.login-dialog-auth-list-title-label {
|
||||
+ font-size: 13pt;
|
||||
+ font-weight: bold;
|
||||
+ padding-left: 15px; }
|
||||
+ .login-dialog-auth-list-label:ltr {
|
||||
+ padding-left: 14px;
|
||||
+ text-align: left; }
|
||||
+ .login-dialog-auth-list-label:rtl {
|
||||
+ padding-right: 14px;
|
||||
+ text-align: right; }
|
||||
+ padding: 6px;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-title,
|
||||
+.login-dialog-auth-list-item-subtitle {
|
||||
+ font-size: 11pt;
|
||||
+ text-align: center;
|
||||
+ padding: 1.8px 0; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-title {
|
||||
+ color: #eeeeec;
|
||||
+ font-weight: bold; }
|
||||
+
|
||||
+.login-dialog-auth-list-item-subtitle {
|
||||
+ color: #bebeb6;
|
||||
+ font-weight: 500; }
|
||||
+
|
||||
+.login-dialog-item-icon {
|
||||
+ width: 1.3em;
|
||||
+ height: 1.3em;
|
||||
+ color: #eeeeec;
|
||||
+ padding: 4.2px 6px;
|
||||
+ border-radius: 8px; }
|
||||
+ .login-dialog-item-icon:hover {
|
||||
+ background-color: #282828; }
|
||||
+ .login-dialog-item-icon-popup.popup-menu {
|
||||
+ min-width: 0; }
|
||||
+ .login-dialog-item-icon-popup-box {
|
||||
+ padding: 6px 0; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels {
|
||||
+ spacing: 3px;
|
||||
+ font-weight: bold;
|
||||
+ text-align: center; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels > :first-child {
|
||||
+ color: #a6a69b;
|
||||
+ font-weight: 500; }
|
||||
+ .login-dialog-item-icon-popup-box .login-dialog-item-icon-popup-labels > :last-child {
|
||||
+ color: #eeeeec; }
|
||||
+
|
||||
.login-dialog-user-list-view {
|
||||
-st-vfade-offset: 1em; }
|
||||
|
||||
.login-dialog-user-list {
|
||||
spacing: 12px;
|
||||
width: 23em; }
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:selected {
|
||||
background-color: #1b6acb;
|
||||
color: #fff; }
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
|
||||
border-right: 2px solid #1b6acb; }
|
||||
|
||||
.login-dialog-user-list-item {
|
||||
border-radius: 12px;
|
||||
padding: 6px;
|
||||
color: #a6a69b; }
|
||||
.login-dialog-user-list-item:ltr .user-widget {
|
||||
padding-right: 1em; }
|
||||
.login-dialog-user-list-item:rtl .user-widget {
|
||||
padding-left: 1em; }
|
||||
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
|
||||
height: 2px;
|
||||
margin-top: 6px;
|
||||
background-color: #eeeeec; }
|
||||
.login-dialog-user-list-item:focus .login-dialog-timed-login-indicator {
|
||||
background-color: #fff; }
|
||||
|
||||
.user-widget-label {
|
||||
color: #eeeeec; }
|
||||
@@ -2145,6 +2330,77 @@ StScrollBar {
|
||||
font-size: 12pt;
|
||||
padding-top: 1em; }
|
||||
|
||||
+.web-login-spinner {
|
||||
+ background-color: rgba(0, 0, 0, 0.5);
|
||||
+ border: 5px rgba(0, 0, 0, 0);
|
||||
+ border-radius: 50px; }
|
||||
+
|
||||
+.web-login-title-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #a6a69b;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-url-label {
|
||||
+ font-size: 11pt;
|
||||
+ font-family: monospace;
|
||||
+ color: #eeeeec;
|
||||
+ text-align: center; }
|
||||
+ .web-login-url-label.web-login-url-label-long {
|
||||
+ font-size: 9pt; }
|
||||
+
|
||||
+.web-login-code-title-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #eeeeec;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-code-label {
|
||||
+ font-size: 11pt;
|
||||
+ color: #eeeeec;
|
||||
+ font-weight: bold;
|
||||
+ text-align: center; }
|
||||
+
|
||||
+.web-login-prompt {
|
||||
+ padding-top: 6px;
|
||||
+ padding-bottom: 6px;
|
||||
+ padding-left: 27px;
|
||||
+ padding-right: 27px;
|
||||
+ spacing: 1.75em; }
|
||||
+
|
||||
+.web-login-button-label {
|
||||
+ font-size: 13pt;
|
||||
+ color: #eeeeec;
|
||||
+ min-width: 12em;
|
||||
+ text-align: center;
|
||||
+ font-weight: bold;
|
||||
+ padding-bottom: 0.1em; }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button,
|
||||
+.login-dialog .web-login-prompt-button,
|
||||
+.unlock-dialog .web-login-intro-button,
|
||||
+.unlock-dialog .web-login-prompt-button {
|
||||
+ border-radius: 32px !important;
|
||||
+ padding: 9px 18px;
|
||||
+ background-color: rgba(238, 238, 236, 0.06); }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button,
|
||||
+.unlock-dialog .web-login-intro-button {
|
||||
+ width: 10em; }
|
||||
+
|
||||
+.login-dialog .web-login-prompt-button,
|
||||
+.unlock-dialog .web-login-prompt-button {
|
||||
+ width: 7em;
|
||||
+ margin: 24px 8px; }
|
||||
+
|
||||
+.login-dialog .web-login-intro-button:hover, .login-dialog .web-login-intro-button:focus,
|
||||
+.login-dialog .web-login-prompt-button:hover,
|
||||
+.login-dialog .web-login-prompt-button:focus {
|
||||
+ background-color: #1b6acb; }
|
||||
+
|
||||
+.unlock-dialog .web-login-intro-button:hover, .unlock-dialog .web-login-intro-button:focus,
|
||||
+.unlock-dialog .web-login-prompt-button:hover,
|
||||
+.unlock-dialog .web-login-prompt-button:focus {
|
||||
+ background-color: rgba(238, 238, 236, 0.16); }
|
||||
+
|
||||
/* Screen Shield */
|
||||
.unlock-dialog-clock {
|
||||
color: white;
|
||||
--
|
||||
2.34.1
|
||||
2.51.0
|
||||
|
||||
|
||||
1008
SOURCES/0001-gdm-util-Early-initialize-all-internal-properties.patch
Normal file
1008
SOURCES/0001-gdm-util-Early-initialize-all-internal-properties.patch
Normal file
File diff suppressed because it is too large
Load Diff
66
SOURCES/0001-loginManager-Update-RegisterSession.patch
Normal file
66
SOURCES/0001-loginManager-Update-RegisterSession.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From 714332d3065a41e8bae61234cd231219cfcc95d6 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres Lopez <joantolo@redhat.com>
|
||||
Date: Tue, 3 Feb 2026 14:43:43 +0100
|
||||
Subject: [PATCH] main: Call RegisterDisplay once UI has initialized
|
||||
|
||||
RegisterDisplay is called to signal that graphics have settled,
|
||||
which allows GDM to terminate pending greeters and plymouth.
|
||||
|
||||
Previously, RegisterSession was used for both recording the login
|
||||
and terminating greeters. This caused a race condition where the
|
||||
new user shell was setting up while the greeter was tearing down,
|
||||
leading to configuration conflicts during the asynchronous handoff.
|
||||
|
||||
By splitting into RegisterSession (called early to record login) and
|
||||
RegisterDisplay (called after graphics settle), the greeter teardown
|
||||
is delayed until the new session has completed its initial modeset.
|
||||
|
||||
Fixes: 32a01330 ("main: Register session with GDM on startup")
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4057>
|
||||
---
|
||||
js/misc/loginManager.js | 18 ++++++++++++++++++
|
||||
js/ui/main.js | 2 ++
|
||||
2 files changed, 20 insertions(+)
|
||||
|
||||
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
|
||||
index 4eee98b..63caea3 100644
|
||||
--- a/js/misc/loginManager.js
|
||||
+++ b/js/misc/loginManager.js
|
||||
@@ -68,6 +68,24 @@ async function registerSessionWithGDM() {
|
||||
}
|
||||
}
|
||||
|
||||
+async function registerDisplayWithGDM() {
|
||||
+ log('Registering display with GDM');
|
||||
+ try {
|
||||
+ await Gio.DBus.system.call(
|
||||
+ 'org.gnome.DisplayManager',
|
||||
+ '/org/gnome/DisplayManager/Manager',
|
||||
+ 'org.gnome.DisplayManager.Manager',
|
||||
+ 'RegisterDisplay',
|
||||
+ GLib.Variant.new('(a{ss})', [{}]), null,
|
||||
+ Gio.DBusCallFlags.NONE, -1, null);
|
||||
+ } catch (e) {
|
||||
+ if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
|
||||
+ log(`Error registering display with GDM: ${e.message}`);
|
||||
+ else
|
||||
+ log('Not calling RegisterDisplay(): method not exported, GDM too old?');
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
let _loginManager = null;
|
||||
|
||||
/**
|
||||
diff --git a/js/ui/main.js b/js/ui/main.js
|
||||
index c753ab6..2bcc819 100644
|
||||
--- a/js/ui/main.js
|
||||
+++ b/js/ui/main.js
|
||||
@@ -309,6 +309,8 @@ function _initializeUI() {
|
||||
sessionMode.currentMode !== 'initial-setup')
|
||||
_handleLockScreenWarning();
|
||||
|
||||
+ LoginManager.registerDisplayWithGDM();
|
||||
+
|
||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||
if (perfModuleName) {
|
||||
let perfOutput = GLib.getenv("SHELL_PERF_OUTPUT");
|
||||
@ -74,7 +74,7 @@ index 72561daab..6b92e3564 100644
|
||||
|
||||
_updateDefaultService() {
|
||||
- if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
|
||||
+ if (this._smartcardManager.loggedInWithToken())
|
||||
+ if (this._smartcardManager?.loggedInWithToken())
|
||||
+ this._defaultService = SMARTCARD_SERVICE_NAME;
|
||||
+ else if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
|
||||
this._defaultService = PASSWORD_SERVICE_NAME;
|
||||
|
||||
@ -332,7 +332,7 @@ diff --git a/data/icons/meson.build b/data/icons/meson.build
|
||||
index eff6e4b530..277df017b2 100644
|
||||
--- a/data/icons/meson.build
|
||||
+++ b/data/icons/meson.build
|
||||
@@ -1 +1,9 @@
|
||||
@@ -1,2 +1,11 @@
|
||||
-install_subdir('hicolor', install_dir: icondir)
|
||||
+excluded_icons=[]
|
||||
+if not have_portal_helper
|
||||
@ -343,6 +343,8 @@ index eff6e4b530..277df017b2 100644
|
||||
+endif
|
||||
+install_subdir('hicolor',
|
||||
+ install_dir: icondir, exclude_files: excluded_icons)
|
||||
+
|
||||
install_subdir('scalable', install_dir: icondir)
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
index 4a1e16d467..01cf828310 100644
|
||||
--- a/data/meson.build
|
||||
|
||||
2866
SOURCES/post-changes-for-passwordless-gdm-backport.patch
Normal file
2866
SOURCES/post-changes-for-passwordless-gdm-backport.patch
Normal file
File diff suppressed because it is too large
Load Diff
348
SOURCES/pre-changes-for-passwordless-gdm-backport.patch
Normal file
348
SOURCES/pre-changes-for-passwordless-gdm-backport.patch
Normal file
@ -0,0 +1,348 @@
|
||||
From 38531053c836ca7ae91e5f20785a67e690422d01 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Mon, 25 Aug 2025 14:25:49 +0200
|
||||
Subject: [PATCH 1/6] gdm/authPrompt: Unset the entry reference on destruction
|
||||
|
||||
We use the internal entry as the reference to the text entry that is
|
||||
currently in use, but during destruction we do not unset it, thus the
|
||||
garbage collector may requires further cycles to actually release it.
|
||||
|
||||
Simplify its job here, improves 572d011894c9b490b8a17ad7db6adec335fbb017
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>
|
||||
---
|
||||
js/gdm/authPrompt.js | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||
index 2b65eee8b9..e4950e56ce 100644
|
||||
--- a/js/gdm/authPrompt.js
|
||||
+++ b/js/gdm/authPrompt.js
|
||||
@@ -133,6 +133,7 @@ var AuthPrompt = GObject.registerClass({
|
||||
|
||||
this._userVerifier.destroy();
|
||||
this._userVerifier = null;
|
||||
+ this._entry = null;
|
||||
}
|
||||
|
||||
vfunc_key_press_event(keyPressEvent) {
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From 34ff1bdba494f66282cba3c8a955b48b041371cc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Mon, 25 Aug 2025 14:29:55 +0200
|
||||
Subject: [PATCH 2/6] gdm/authPrompt: Clear the inactive entry too
|
||||
|
||||
In multi-factor authentication cases we may end up clearing the current
|
||||
entry, but we are potentially leaving a previously filled inactive entry
|
||||
as it is.
|
||||
|
||||
Avoid this, and clear all the entries we have when clearing the prompt.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>
|
||||
---
|
||||
js/gdm/authPrompt.js | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||
index e4950e56ce..2d306d16b5 100644
|
||||
--- a/js/gdm/authPrompt.js
|
||||
+++ b/js/gdm/authPrompt.js
|
||||
@@ -489,6 +489,7 @@ var AuthPrompt = GObject.registerClass({
|
||||
|
||||
clear() {
|
||||
this._entry.text = '';
|
||||
+ this._inactiveEntry.text = '';
|
||||
this.stopSpinning();
|
||||
this._authList.clear();
|
||||
this._authList.hide();
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From 576c74f85fe316ef541a347bd51134ceb091658a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Tue, 26 Aug 2025 16:40:07 +0200
|
||||
Subject: [PATCH 3/6] gdm/authPrompt: Factorize the entry update code
|
||||
|
||||
Cleanup the code a bit to make future updates smaller
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>
|
||||
---
|
||||
js/gdm/authPrompt.js | 17 +++++++++++++----
|
||||
1 file changed, 13 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||
index 2d306d16b5..ed42409b12 100644
|
||||
--- a/js/gdm/authPrompt.js
|
||||
+++ b/js/gdm/authPrompt.js
|
||||
@@ -305,13 +305,22 @@ var AuthPrompt = GObject.registerClass({
|
||||
}
|
||||
|
||||
_updateEntry(secret) {
|
||||
+ let newEntry, inactiveEntry;
|
||||
+
|
||||
if (secret && this._entry !== this._passwordEntry) {
|
||||
- this._mainBox.replace_child(this._entry, this._passwordEntry);
|
||||
- this._entry = this._passwordEntry;
|
||||
+ newEntry = this._passwordEntry;
|
||||
+ inactiveEntry = this._textEntry;
|
||||
} else if (!secret && this._entry !== this._textEntry) {
|
||||
- this._mainBox.replace_child(this._entry, this._textEntry);
|
||||
- this._entry = this._textEntry;
|
||||
+ newEntry = this._textEntry;
|
||||
+ inactiveEntry = this._passwordEntry;
|
||||
+ }
|
||||
+
|
||||
+ if (newEntry) {
|
||||
+ this._mainBox.replace_child(this._entry, newEntry);
|
||||
+ this._entry = newEntry;
|
||||
+ this._inactiveEntry = inactiveEntry;
|
||||
}
|
||||
+
|
||||
this._capsLockWarningLabel.visible = secret;
|
||||
}
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From 2b9dd08c26da92ed0b2e86356fb26a1b69d02f66 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Mon, 25 Aug 2025 14:35:57 +0200
|
||||
Subject: [PATCH 4/6] gdm/authPrompt: Preserve the text when switching entry
|
||||
visibility
|
||||
|
||||
The text visibility of an auth prompt entry may change dynamically at
|
||||
runtime, in particular when unlocking the screen with the blank screen
|
||||
or with the screen shield visible this is happening:
|
||||
- The user starts typing the PAM credential (may be secret or not)
|
||||
- Under the hood the PAM conversation starts and actually asks user
|
||||
for input
|
||||
- The entry text is not cleared because we use what the user has typed
|
||||
so far as the preemptive secret.
|
||||
- The entry is adjusted to follow the requested PAM text visibility
|
||||
settings.
|
||||
-> This may lead to switching the actual text entry widget in use
|
||||
|
||||
Now, if the first entry that PAM requires is "ECHO ON", like it may
|
||||
happen in the case in which a visible value is requested, we end up
|
||||
"clearing" what the user as typed instead of preserving the value as
|
||||
pre-filled value.
|
||||
|
||||
Causing the user typing something wrong instead.
|
||||
|
||||
To prevent this we need to restore both the text, the cursor position
|
||||
and the selection bounds (in case the use pressed some key [binding])
|
||||
leading to a position or selection change.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3850>
|
||||
---
|
||||
js/gdm/authPrompt.js | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||
index ed42409b12..e4084ad22d 100644
|
||||
--- a/js/gdm/authPrompt.js
|
||||
+++ b/js/gdm/authPrompt.js
|
||||
@@ -319,6 +319,9 @@ var AuthPrompt = GObject.registerClass({
|
||||
this._mainBox.replace_child(this._entry, newEntry);
|
||||
this._entry = newEntry;
|
||||
this._inactiveEntry = inactiveEntry;
|
||||
+
|
||||
+ const {text, cursorPosition, selectionBound} = inactiveEntry.clutterText;
|
||||
+ this._entry.clutterText.set({text, cursorPosition, selectionBound});
|
||||
}
|
||||
|
||||
this._capsLockWarningLabel.visible = secret;
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From 1670d0e80215cd3c934dc1de79997753b9eafdf8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Fri, 22 Aug 2025 15:08:23 +0200
|
||||
Subject: [PATCH 5/6] gdm/authPrompt: Fix key focus handling on choice list
|
||||
|
||||
When a choice list widget is prompted in GDM we call updateSensitivity()
|
||||
but this does not act on the currently visible authentication widget but
|
||||
rather on the text entry all the times.
|
||||
|
||||
And this causes that when a choice list is shown we always set the key
|
||||
focus to the (hidden) text entry.
|
||||
|
||||
This implies that when the list is finally shown, moving the arrow keys
|
||||
leads makes the entry context menu to be shown instead of being able to
|
||||
navigate through the entries.
|
||||
|
||||
So, make updateSensitivity use the currently visible authorization
|
||||
widget instead and use it to control the sensitivity of the choice list
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3849>
|
||||
---
|
||||
js/gdm/authPrompt.js | 21 ++++++++++++++-------
|
||||
1 file changed, 14 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
|
||||
index e4084ad22d..f9205d41dd 100644
|
||||
--- a/js/gdm/authPrompt.js
|
||||
+++ b/js/gdm/authPrompt.js
|
||||
@@ -524,13 +524,13 @@ var AuthPrompt = GObject.registerClass({
|
||||
this._authList.set({
|
||||
opacity: 0,
|
||||
visible: true,
|
||||
- reactive: false,
|
||||
});
|
||||
+ this.updateSensitivity(false);
|
||||
this._authList.ease({
|
||||
opacity: 255,
|
||||
duration: MESSAGE_FADE_OUT_ANIMATION_TIME,
|
||||
transition: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
- onComplete: () => (this._authList.reactive = true),
|
||||
+ onComplete: () => this.updateSensitivity(true),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -606,18 +606,25 @@ var AuthPrompt = GObject.registerClass({
|
||||
}
|
||||
|
||||
updateSensitivity(sensitive) {
|
||||
- if (this._entry.reactive === sensitive)
|
||||
+ let authWidget;
|
||||
+
|
||||
+ if (this._authList.visible)
|
||||
+ authWidget = this._authList;
|
||||
+ else
|
||||
+ authWidget = this._entry;
|
||||
+
|
||||
+ if (authWidget.reactive === sensitive)
|
||||
return;
|
||||
|
||||
- this._entry.reactive = sensitive;
|
||||
+ authWidget.reactive = sensitive;
|
||||
|
||||
if (sensitive) {
|
||||
- this._entry.grab_key_focus();
|
||||
+ authWidget.grab_key_focus();
|
||||
} else {
|
||||
this.grab_key_focus();
|
||||
|
||||
- if (this._entry === this._passwordEntry)
|
||||
- this._entry.password_visible = false;
|
||||
+ if (authWidget === this._passwordEntry)
|
||||
+ authWidget.password_visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From c82bbfa5eeb3e3e6455f9d168b0463183d8eaf0a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Tue, 8 Jul 2025 17:42:56 +0200
|
||||
Subject: [PATCH 6/6] loginDialog: Move session/a11y buttons into a box
|
||||
|
||||
The intermediate container allows the theme to control the distance
|
||||
from the edge and spacing between buttons, which is more accessible
|
||||
to the designers than computing the values from code.
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3794>
|
||||
---
|
||||
.../widgets/_login-dialog.scss | 5 ++++
|
||||
js/gdm/loginDialog.js | 27 +++++++++++--------
|
||||
2 files changed, 21 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
|
||||
index f68d5de996..307a751628 100644
|
||||
--- a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
|
||||
+++ b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
|
||||
@@ -89,6 +89,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
+.login-dialog-bottom-button-group {
|
||||
+ padding: 32px;
|
||||
+ spacing: 16px;
|
||||
+}
|
||||
+
|
||||
.login-dialog-logo-bin { padding: 24px 0px; }
|
||||
.login-dialog-banner { color: darken($osd_fg_color,10%); }
|
||||
.login-dialog-button-box { width: 23em; spacing: 5px; }
|
||||
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
|
||||
index fbced3e4ab..a218e59d78 100644
|
||||
--- a/js/gdm/loginDialog.js
|
||||
+++ b/js/gdm/loginDialog.js
|
||||
@@ -559,6 +559,11 @@ var LoginDialog = GObject.registerClass({
|
||||
bannerBox.add_child(this._bannerLabel);
|
||||
this._updateBanner();
|
||||
|
||||
+ this._bottomButtonGroup = new St.BoxLayout({
|
||||
+ style_class: 'login-dialog-bottom-button-group',
|
||||
+ });
|
||||
+ this.add_child(this._bottomButtonGroup);
|
||||
+
|
||||
this._sessionMenuButton = new SessionMenuButton();
|
||||
this._sessionMenuButton.connect('session-activated',
|
||||
(list, sessionId) => {
|
||||
@@ -566,7 +571,7 @@ var LoginDialog = GObject.registerClass({
|
||||
});
|
||||
this._sessionMenuButton.opacity = 0;
|
||||
this._sessionMenuButton.show();
|
||||
- this.add_child(this._sessionMenuButton);
|
||||
+ this._bottomButtonGroup.add_child(this._sessionMenuButton);
|
||||
|
||||
this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin',
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
@@ -625,17 +630,17 @@ var LoginDialog = GObject.registerClass({
|
||||
return actorBox;
|
||||
}
|
||||
|
||||
- _getSessionMenuButtonAllocation(dialogBox) {
|
||||
+ _getBottomButtonGroupAllocation(dialogBox) {
|
||||
let actorBox = new Clutter.ActorBox();
|
||||
|
||||
- let [, , natWidth, natHeight] = this._sessionMenuButton.get_preferred_size();
|
||||
+ const [, , natWidth, natHeight] = this._bottomButtonGroup.get_preferred_size();
|
||||
|
||||
if (this.get_text_direction() === Clutter.TextDirection.RTL)
|
||||
- actorBox.x1 = dialogBox.x1 + natWidth;
|
||||
+ actorBox.x1 = dialogBox.x1;
|
||||
else
|
||||
- actorBox.x1 = dialogBox.x2 - (natWidth * 2);
|
||||
+ actorBox.x1 = dialogBox.x2 - natWidth;
|
||||
|
||||
- actorBox.y1 = dialogBox.y2 - (natHeight * 2);
|
||||
+ actorBox.y1 = dialogBox.y2 - natHeight;
|
||||
actorBox.x2 = actorBox.x1 + natWidth;
|
||||
actorBox.y2 = actorBox.y1 + natHeight;
|
||||
|
||||
@@ -698,9 +703,9 @@ var LoginDialog = GObject.registerClass({
|
||||
logoHeight = logoAllocation.y2 - logoAllocation.y1;
|
||||
}
|
||||
|
||||
- let sessionMenuButtonAllocation = null;
|
||||
- if (this._sessionMenuButton.visible)
|
||||
- sessionMenuButtonAllocation = this._getSessionMenuButtonAllocation(dialogBox);
|
||||
+ let bottomButtonGroupAllocation = null;
|
||||
+ if (this._bottomButtonGroup.visible)
|
||||
+ bottomButtonGroupAllocation = this._getBottomButtonGroupAllocation(dialogBox);
|
||||
|
||||
// Then figure out if we're overly constrained and need to
|
||||
// try a different layout, or if we have what extra space we
|
||||
@@ -801,8 +806,8 @@ var LoginDialog = GObject.registerClass({
|
||||
if (logoAllocation)
|
||||
this._logoBin.allocate(logoAllocation);
|
||||
|
||||
- if (sessionMenuButtonAllocation)
|
||||
- this._sessionMenuButton.allocate(sessionMenuButtonAllocation);
|
||||
+ if (bottomButtonGroupAllocation)
|
||||
+ this._bottomButtonGroup.allocate(bottomButtonGroupAllocation);
|
||||
}
|
||||
|
||||
_ensureUserListLoaded() {
|
||||
--
|
||||
2.52.0
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
Name: gnome-shell
|
||||
Version: 40.10
|
||||
Release: 33%{?dist}
|
||||
Release: 36%{?dist}
|
||||
Summary: Window management and application launching for GNOME
|
||||
|
||||
License: GPLv2+
|
||||
@ -37,7 +37,13 @@ Patch18: 0001-authPrompt-Disregard-smartcard-status-changes-events.patch
|
||||
Patch19: 0001-loginDialog-Show-session-menu-button-when-in-IN_PROG.patch
|
||||
Patch20: 0001-systemActions-Optionally-allow-restart-shutdown-on-l.patch
|
||||
Patch21: 0001-authPrompt-Connect-disable-show-password-key-with-pa.patch
|
||||
Patch22: 0001-main-Register-session-with-GDM-on-startup.patch
|
||||
Patch22: 0001-gdm-util-Early-initialize-all-internal-properties.patch
|
||||
Patch23: 0001-main-Register-session-with-GDM-on-startup.patch
|
||||
Patch24: 0001-loginManager-Update-RegisterSession.patch
|
||||
# Passwordless GDM patch series
|
||||
Patch25: pre-changes-for-passwordless-gdm-backport.patch
|
||||
Patch26: 0001-Support-for-web-login-and-unified-auth-mechanism.patch
|
||||
Patch27: post-changes-for-passwordless-gdm-backport.patch
|
||||
|
||||
# Misc.
|
||||
Patch30: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch
|
||||
@ -278,6 +284,8 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
||||
%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
|
||||
%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Shell.Extensions.svg
|
||||
%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Shell.Extensions-symbolic.svg
|
||||
%{_datadir}/icons/scalable/status/fingerprint-auth-symbolic.svg
|
||||
%{_datadir}/icons/scalable/status/vcard-symbolic.svg
|
||||
%{_userunitdir}/org.gnome.Shell-disable-extensions.service
|
||||
%{_userunitdir}/org.gnome.Shell.target
|
||||
%{_userunitdir}/org.gnome.Shell@wayland.service
|
||||
@ -307,6 +315,19 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon May 25 2026 Joan Torres Lopez <joantolo@redhat.com> - 40.10-36
|
||||
- Update fix of registering session
|
||||
Registering the display is needed too
|
||||
Resolves: RHEL-178690
|
||||
|
||||
* Thu Apr 2 2026 Joan Torres Lopez <joantolo@redhat.com> - 40.10-35
|
||||
- Backport passwordless GDM feature to RHEL 9
|
||||
Resolves: RHEL-169914
|
||||
|
||||
* Mon Mar 9 2026 Joan Torres Lopez <joantolo@redhat.com> - 40.10-34
|
||||
- Fix to automatically start fingerprint when enabled
|
||||
Resolves: RHEL-4166
|
||||
|
||||
* Tue Nov 18 2025 Joan Torres Lopez <joantolo@redhat.com> - 40.10-33
|
||||
- Register session with GDM on startup
|
||||
Resolves: RHEL-129287
|
||||
|
||||
Loading…
Reference in New Issue
Block a user