import CS gnome-shell-40.10-36.el9

This commit is contained in:
AlmaLinux RelEng Bot 2026-08-24 09:07:31 -04:00
parent ee26bb5bd9
commit eaeb4a3700
10 changed files with 13705 additions and 225 deletions

View File

@ -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();

File diff suppressed because it is too large Load Diff

View File

@ -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

File diff suppressed because it is too large Load Diff

View 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");

View File

@ -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;

View File

@ -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

File diff suppressed because it is too large Load Diff

View 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

View File

@ -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