session-opened signature is reverted to keep ABI compatibility

Use session-opened-with-session-id instead

Also set style hardcoded from js files instead of from stylesheets
classes because the patches applied to stylesheets aren't used (no
sassc).

Related: RHEL-92307
This commit is contained in:
Joan Torres López 2025-06-19 18:10:41 +02:00
parent 933c7ec981
commit 4cf439c61b
2 changed files with 32 additions and 46 deletions

View File

@ -79,9 +79,8 @@ there's already a conflicting session opened.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3134>
---
.../org.freedesktop.login1.Session.xml | 1 +
.../widgets/_login-dialog.scss | 20 ++++++
js/gdm/loginDialog.js | 62 +++++++++++++++++++
3 files changed, 83 insertions(+)
js/gdm/loginDialog.js | 64 +++++++++++++++++++
2 files changed, 65 insertions(+)
diff --git a/data/dbus-interfaces/org.freedesktop.login1.Session.xml b/data/dbus-interfaces/org.freedesktop.login1.Session.xml
index 6fab81794..ecab4bbaa 100644
@ -95,37 +94,6 @@ index 6fab81794..ecab4bbaa 100644
<property name="Remote" type="b" access="read"/>
<property name="Type" type="s" access="read"/>
<property name="State" type="s" access="read"/>
diff --git a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
index 1789beca9..baf45a9d8 100644
--- a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
+++ b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss
@@ -89,6 +89,26 @@
}
}
+.conflicting-session-dialog-content {
+ spacing: 20px;
+
+ .conflicting-session-dialog-title {
+ text-align: center;
+ font-size: 18pt;
+ font-weight: 800;
+ margin-bottom: 5px;
+ }
+
+ .conflicting-session-dialog-desc {
+ text-align: center;
+ }
+
+ .conflicting-session-dialog-desc-warning {
+ text-align: center;
+ color: $warning_color;
+ }
+}
+
.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 241721ff7..674ff24a5 100644
--- a/js/gdm/loginDialog.js
@ -138,7 +106,7 @@ index 241721ff7..674ff24a5 100644
const PopupMenu = imports.ui.popupMenu;
const Realmd = imports.gdm.realmd;
const UserWidget = imports.ui.userWidget;
@@ -400,6 +401,67 @@ var SessionMenuButton = GObject.registerClass({
@@ -400,6 +401,69 @@ var SessionMenuButton = GObject.registerClass({
}
});
@ -157,26 +125,28 @@ index 241721ff7..674ff24a5 100644
+ bannerText = _('Login is not possible because a session is already running for %s. To login, you must log out from the session or force stop it.').format(userName);
+
+ let textLayout = new St.BoxLayout({
+ style_class: 'conflicting-session-dialog-content',
+ vertical: true,
+ x_expand: true,
+ style: 'spacing: 20px;',
+ });
+
+ let title = new St.Label({
+ text: _('Session Already Running'),
+ style_class: 'conflicting-session-dialog-title',
+ });
+ style: 'text-align: center;'
+ + 'font-size: 18pt;'
+ + 'font-weight: 800;'
+ + 'margin-bottom: 5px;' });
+
+ let banner = new St.Label({
+ text: bannerText,
+ style_class: 'conflicting-session-dialog-desc',
+ style: 'text-align: center',
+ });
+ banner.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
+ banner.clutter_text.line_wrap = true;
+
+ let warningBanner = new St.Label({
+ text: _('Force stopping will quit any running apps and processes, and could result in data loss'),
+ style_class: 'conflicting-session-dialog-desc-warning',
+ style: 'text-align: center; color: #f57900;',
+ });
+ warningBanner.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
+ warningBanner.clutter_text.line_wrap = true;
@ -227,14 +197,25 @@ closed on its side, the new session will start.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3134>
---
js/gdm/loginDialog.js | 73 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 71 insertions(+), 2 deletions(-)
js/gdm/loginDialog.js | 77 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 73 insertions(+), 4 deletions(-)
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 674ff24a5..25b86880d 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -1044,6 +1044,28 @@ var LoginDialog = GObject.registerClass({
@@ -914,8 +914,8 @@ var LoginDialog = GObject.registerClass({
this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed',
this._onDefaultSessionChanged.bind(this));
- this._sessionOpenedId = this._greeter.connect('session-opened',
- this._onSessionOpened.bind(this));
+ this._sessionOpenedId = this._greeter.connect('session-opened-with-session-id',
+ this._onSessionOpenedWithSessionId.bind(this));
this._timedLoginRequestedId = this._greeter.connect('timed-login-requested',
this._onTimedLoginRequested.bind(this));
}
@@ -1053,6 +1053,28 @@ var LoginDialog = GObject.registerClass({
});
}
@ -263,7 +244,7 @@ index 674ff24a5..25b86880d 100644
_startSession(serviceName) {
this._bindOpacity();
this.ease({
@@ -1057,8 +1079,55 @@ var LoginDialog = GObject.registerClass({
@@ -1066,8 +1088,55 @@ var LoginDialog = GObject.registerClass({
});
}
@ -303,7 +284,7 @@ index 674ff24a5..25b86880d 100644
+ return null;
+ }
+
+ async _onSessionOpened(client, serviceName, sessionId) {
+ async _onSessionOpenedWithSessionId(client, serviceName, sessionId) {
+ try {
+ if (sessionId) {
+ const conflictingSession = await this._findConflictingSession(sessionId);

View File

@ -8,7 +8,7 @@
Name: gnome-shell
Version: 40.10
Release: 26%{?dist}
Release: 27%{?dist}
Summary: Window management and application launching for GNOME
License: GPLv2+
@ -303,6 +303,11 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
%endif
%changelog
* Thu Jun 19 2025 Joan Torres <joantolo@redhat.com> - 40.10-27
- session-opened signature is reverted to keep ABI compatibility,
use session-opened-with-session-id instead
Related: RHEL-92307
* Fri May 09 2025 Joan Torres <joantolo@redhat.com> - 40.10-26
- Support conflicting session dialog
Resolves: RHEL-92307