From 5aa97cb4bede1501a4efe9ec49f617b8116fd6ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?zyxhere=F0=9F=92=AD?= Date: Wed, 5 Nov 2025 21:16:56 +0500 Subject: [PATCH] gnome-base/gnome-session: exclude gnome-shell from session query MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Part-of: https://github.com/gentoo/gentoo/pull/44493 Closes: https://github.com/gentoo/gentoo/pull/44493 Signed-off-by: Sam James --- ...-from-queryendSession-and-endSession.patch | 40 ++++++ .../gnome-session-48.0-r2.ebuild | 124 ++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 gnome-base/gnome-session/files/exclude-gnome-shell-from-queryendSession-and-endSession.patch create mode 100644 gnome-base/gnome-session/gnome-session-48.0-r2.ebuild 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 0000000000000..87aacf7e9a49f --- /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 +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 0000000000000..188f4bc873927 --- /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 +}