commit:     5aa97cb4bede1501a4efe9ec49f617b8116fd6ee
Author:     zyxhere💭 <zyx <AT> envs <DOT> net>
AuthorDate: Wed Nov  5 16:16:56 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Nov  5 16:31:20 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5aa97cb4

gnome-base/gnome-session: exclude gnome-shell from session query

Or else on systemd the user can't logout of the session, on OpenRC they
technically can (all the apps will get killed except gnome-shell) but
gnome-shell will show up as an unresponsive program and the session will
fail to end i.e the user can't logout. Only needed with the backported
patch for the bug with <gnome-shell-49.

Bug: https://bugs.gentoo.org/959295
Signed-off-by: zyxhere💭 <zyx <AT> envs.net>
Part-of: https://github.com/gentoo/gentoo/pull/44493
Closes: https://github.com/gentoo/gentoo/pull/44493
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...shell-from-queryendSession-and-endSession.patch |  40 +++++++
 .../gnome-session/gnome-session-48.0-r2.ebuild     | 124 +++++++++++++++++++++
 2 files changed, 164 insertions(+)

diff --git 
a/gnome-base/gnome-session/files/exclude-gnome-shell-from-queryendSession-and-endSession.patch
 
b/gnome-base/gnome-session/files/exclude-gnome-shell-from-queryendSession-and-endSession.patch
new file mode 100644
index 000000000000..87aacf7e9a49
--- /dev/null
+++ 
b/gnome-base/gnome-session/files/exclude-gnome-shell-from-queryendSession-and-endSession.patch
@@ -0,0 +1,40 @@
+From 51eeea93291bf5f36ac99e528a22401cd17e0e23 Mon Sep 17 00:00:00 2001
+From: Adrian Vovk <[email protected]>
+Date: Wed, 4 Jun 2025 14:00:32 -0400
+Subject: [PATCH] Exclude gnome-shell from QueryEndSession and EndSession
+
+This is a temporary hack until we drop builtin session management from
+gnome-session and can rely only on systemd session startup
+---
+ gnome-session/gsm-manager.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
+index f7bb26e6..743a372e 100644
+--- a/gnome-session/gsm-manager.c
++++ b/gnome-session/gsm-manager.c
+@@ -821,6 +821,10 @@ _client_end_session (GsmClient            *client,
+         gboolean ret;
+         GError  *error;
+ 
++        // HACK, but it's temporary until we drop builtin session startup.
++        if (g_strcmp0 ("org.gnome.Shell.desktop", gsm_client_peek_app_id 
(client)) == 0)
++            return FALSE;
++
+         error = NULL;
+         ret = gsm_client_end_session (client, data->flags, &error);
+         if (! ret) {
+@@ -1004,6 +1008,10 @@ _client_query_end_session (const char           *id,
+         gboolean ret;
+         GError  *error;
+ 
++        // HACK, but it's temporary until we drop builtin session startup.
++        if (g_strcmp0 ("org.gnome.Shell.desktop", gsm_client_peek_app_id 
(client)) == 0)
++            return FALSE;
++
+         error = NULL;
+         ret = gsm_client_query_end_session (client, data->flags, &error);
+         if (! ret) {
+-- 
+GitLab
+

diff --git a/gnome-base/gnome-session/gnome-session-48.0-r2.ebuild 
b/gnome-base/gnome-session/gnome-session-48.0-r2.ebuild
new file mode 100644
index 000000000000..188f4bc87392
--- /dev/null
+++ b/gnome-base/gnome-session/gnome-session-48.0-r2.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit desktop gnome.org gnome2-utils meson systemd xdg
+
+DESCRIPTION="Gnome session manager"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/gnome-session";
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 
~amd64-linux ~x86-linux"
+IUSE="doc elogind systemd X"
+
+REQUIRED_USE="^^ ( elogind systemd )"
+
+COMMON_DEPEND="
+       >=dev-libs/glib-2.46.0:2
+       X? (
+               >=x11-libs/gtk+-3.22.0:3[X]
+               x11-libs/libICE
+               x11-libs/libSM
+               x11-libs/libX11
+       )
+       >=gnome-base/gnome-desktop-3.34.2:3=
+       >=dev-libs/json-glib-0.10
+       media-libs/libglvnd[X]
+       media-libs/libepoxy
+       x11-libs/libXcomposite
+       systemd? ( >=sys-apps/systemd-242:0= )
+       elogind? ( >=sys-auth/elogind-239.4 )
+"
+
+# Pure-runtime deps from the session files should *NOT* be added here.
+# >=gnome-settings-daemon-3.35.91 for UsbProtection required component.
+# x11-misc/xdg-user-dirs{,-gtk} are needed to create the various XDG_*_DIRs, 
and
+# create .config/user-dirs.dirs which is read by glib to get G_USER_DIRECTORY_*
+# xdg-user-dirs-update is run during login (see 10-user-dirs-update-gnome 
below).
+# sys-apps/dbus[X] is needed for session management.
+# Our 90-xcursor-theme-gnome reads a setting from gsettings-desktop-schemas.
+RDEPEND="${COMMON_DEPEND}
+       >=gnome-base/gnome-settings-daemon-3.35.91
+       >=gnome-base/gsettings-desktop-schemas-0.1.7
+       sys-apps/dbus[elogind=,systemd=,X]
+
+       x11-misc/xdg-user-dirs
+       x11-misc/xdg-user-dirs-gtk
+"
+DEPEND="${COMMON_DEPEND}
+       x11-libs/xtrans
+"
+BDEPEND="
+       dev-libs/libxslt
+       dev-util/gdbus-codegen
+       >=sys-devel/gettext-0.19.8
+       virtual/pkgconfig
+       doc? (
+               app-text/xmlto
+               app-text/docbook-xml-dtd:4.1.2
+       )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-46.0-meson-Support-elogind.patch
+       "${FILESDIR}/data-Install-XWayland-targets-even-if-x11-is-off.patch"
+
+       # https://bugs.gentoo.org/959295 user can't logout without it
+       
"${FILESDIR}"/exclude-gnome-shell-from-queryendSession-and-endSession.patch
+)
+
+src_prepare() {
+       default
+       xdg_environment_reset
+
+       # Install USE=doc in ${PF} if enabled
+       sed -i -e "s:meson\.project_name(), 'dbus':'${PF}', 'dbus':" 
doc/dbus/meson.build || die
+}
+
+src_configure() {
+       local emesonargs=(
+               -Ddeprecation_flags=false
+               -Dsession_selector=true # gnome-custom-session
+               $(meson_use doc docbook)
+               -Dman=true
+               -Dsystemduserunitdir="$(systemd_get_userunitdir)"
+               $(meson_use X x11)
+       )
+       meson_src_configure
+}
+
+src_install() {
+       meson_src_install
+
+       exeinto /etc/X11/Sessions
+       doexe "${FILESDIR}/Gnome"
+
+       newmenu "${FILESDIR}/defaults.list-r7" gnome-mimeapps.list
+
+       exeinto /etc/X11/xinit/xinitrc.d/
+       newexe "${FILESDIR}/15-xdg-data-gnome-r1" 15-xdg-data-gnome
+
+       # This should be done here as discussed in bug #270852
+       newexe "${FILESDIR}/10-user-dirs-update-gnome-r1" 
10-user-dirs-update-gnome
+
+       # Set XCURSOR_THEME from current dconf setting instead of installing
+       # default cursor symlink globally and affecting other DEs (bug #543488)
+       # https://bugzilla.gnome.org/show_bug.cgi?id=711703
+       newexe "${FILESDIR}/90-xcursor-theme-gnome" 90-xcursor-theme-gnome
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+       gnome2_schemas_update
+
+       if ! has_version gnome-base/gdm && ! has_version x11-misc/sddm; then
+               ewarn "If you use a custom .xinitrc for your X session,"
+               ewarn "make sure that the commands in the xinitrc.d scripts are 
run."
+       fi
+}
+
+pkg_postrm() {
+       xdg_pkg_postinst
+       gnome2_schemas_update
+}

Reply via email to