Auto sync2gitlab import of gnome-session-3.28.1-14.el8.src.rpm

This commit is contained in:
James Antill 2022-05-26 07:48:51 -04:00
parent 299c411851
commit bcc14f168f
19 changed files with 2150 additions and 1 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/gnome-session-3.28.1.tar.xz

View File

@ -0,0 +1,90 @@
From 15be30033e5b24a8c84a4d4338da0e8a3930303a Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Tue, 14 Aug 2018 14:49:59 +0200
Subject: [PATCH] Fedora: Set grub boot-flags on shutdown / reboot
Fedora's grub will automatically hide the boot-menu if the previous
boot has set the boot_success flag in grub's environment. This happens
automatically 30 seconds after login.
But if the user shuts down or reboots from the system-menu before then
(e.g. directly from gdm) then the boot_success flag gets not set. If
a reboot / shutdown is initiated through gnome-session then the user
is successfully interacting with the system, so set the boot_success
flag from gnome_session for this case to fix reboot from gdm leading to
the boot-menu not being hidden.
---
gnome-session/gsm-manager.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 3cf421cd..924767af 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -3629,51 +3629,63 @@ on_shutdown_prepared (GsmSystem *system,
gboolean success,
GsmManager *manager)
{
g_debug ("GsmManager: on_shutdown_prepared, success: %d", success);
g_signal_handlers_disconnect_by_func (system, on_shutdown_prepared, manager);
if (success) {
/* move to end-session phase */
g_assert (manager->priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION);
manager->priv->phase++;
start_phase (manager);
} else {
disconnect_shell_dialog_signals (manager);
gsm_shell_close_end_session_dialog (manager->priv->shell);
/* back to running phase */
cancel_end_session (manager);
}
}
static gboolean
do_query_end_session_exit (GsmManager *manager)
{
gboolean reboot = FALSE;
gboolean shutdown = FALSE;
switch (manager->priv->logout_type) {
case GSM_MANAGER_LOGOUT_LOGOUT:
break;
case GSM_MANAGER_LOGOUT_REBOOT:
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
+ /*
+ * Fedora specific patch to make sure the boot-menu does not
+ * show when it is configured to auto-hide and a reboot is
+ * initiated directly from gdm.
+ */
+ system("/usr/sbin/grub2-set-bootflag boot_success");
reboot = TRUE;
break;
case GSM_MANAGER_LOGOUT_SHUTDOWN:
case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT:
+ /*
+ * Fedora specific patch to make sure the boot-menu does not
+ * show when it is configured to auto-hide and a shutdown is
+ * initiated directly from gdm.
+ */
+ system("/usr/sbin/grub2-set-bootflag boot_success");
shutdown = TRUE;
break;
default:
g_warning ("Unexpected logout type %d in do_query_end_session_exit()",
manager->priv->logout_type);
break;
}
if (reboot || shutdown) {
g_signal_connect (manager->priv->system, "shutdown-prepared",
G_CALLBACK (on_shutdown_prepared), manager);
gsm_system_prepare_shutdown (manager->priv->system, reboot);
return FALSE; /* don't leave query end session yet */
}
return TRUE; /* go to end session phase */
}
--
2.31.1

View File

@ -0,0 +1,75 @@
From 687ec347d2fa0bca227e3a583a3a47f9bbc10bb0 Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Tue, 4 Oct 2016 13:15:39 -0400
Subject: [PATCH] check-accelerated-gles: Use eglGetPlatformDisplay{,EXT}
eglGetDisplay forces the implementation to guess, and in general it
can't guess correctly. Be explicit.
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
.../gnome-session-check-accelerated-gles-helper.c | 36 +++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/tools/gnome-session-check-accelerated-gles-helper.c b/tools/gnome-session-check-accelerated-gles-helper.c
index 2a38d9e..472d1ad 100644
--- a/tools/gnome-session-check-accelerated-gles-helper.c
+++ b/tools/gnome-session-check-accelerated-gles-helper.c
@@ -34,11 +34,43 @@
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <EGL/egl.h>
+#include <EGL/eglext.h>
#endif
#include "gnome-session-check-accelerated-common.h"
#ifdef GDK_WINDOWING_X11
+static EGLDisplay
+get_display (void *native)
+{
+ EGLDisplay dpy = NULL;
+ const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
+
+ if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base")) {
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplay");
+
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+
+ if (dpy)
+ return dpy;
+ }
+
+ if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base")) {
+ PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+ (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
+
+ if (get_platform_display)
+ dpy = get_platform_display (EGL_PLATFORM_X11_KHR, native, NULL);
+
+ if (dpy)
+ return dpy;
+ }
+
+ return eglGetDisplay ((EGLNativeDisplayType) native);
+}
+
static char *
get_gles_renderer (void)
{
@@ -67,7 +99,9 @@ get_gles_renderer (void)
gdk_error_trap_push ();
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
- egl_dpy = eglGetDisplay (display);
+
+ egl_dpy = get_display (display);
+
if (!egl_dpy) {
g_warning ("eglGetDisplay() failed");
goto out;
--
2.9.3

View File

@ -0,0 +1,53 @@
From ae60cb25636b6f68d087591de11fd681f6f8c918 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Tue, 19 Nov 2019 09:29:16 -0500
Subject: [PATCH] gnome-session: don't validate shell before using it
Users sometimes set their shell to an invalid shell to prevent
login from proceeding.
GNOME on Wayland still allows login in these cases.
This commit makes the behavior match expectations by skipping
shell validity checks when deciding to run though a login shell.
---
gnome-session/gnome-session.in | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in
index ce63df56..7d967d34 100755
--- a/gnome-session/gnome-session.in
+++ b/gnome-session/gnome-session.in
@@ -1,28 +1,25 @@
#!/bin/sh
if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
[ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
- [ -n "$SHELL" ] &&
- grep -q "$SHELL" /etc/shells &&
- ! (echo "$SHELL" | grep -q "false") &&
- ! (echo "$SHELL" | grep -q "nologin"); then
+ [ -n "$SHELL" ]; then
if [ "$1" != '-l' ]; then
exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
else
shift
fi
fi
SETTING=$(gsettings get org.gnome.system.locale region)
REGION=${SETTING#\'}
REGION=${REGION%\'}
if [ -n "$REGION" ]; then
export LC_TIME=$REGION
export LC_NUMERIC=$REGION
export LC_MONETARY=$REGION
export LC_MEASUREMENT=$REGION
export LC_PAPER=$REGION
fi
exec @libexecdir@/gnome-session-binary "$@"
--
2.21.0

View File

@ -0,0 +1,107 @@
From 7cdf11b1b4b04f8cd366316f6c50a9bd0b4e67d3 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Wed, 6 May 2020 13:45:50 -0400
Subject: [PATCH] main: only log check-accelerated errors when debugging
enabled
The journal currently gets spammed with messages like:
gnome-session: gnome-session-check-accelerated: GL Helper exited with code 512
gnome-session: libEGL warning: DRI2: failed to authenticate
gnome-session: gnome-session-check-accelerated: GLES Helper exited with code 512
if a the machine lacks accelerated graphics. But lacking accelerated
graphics isn't actually an error (many servers do).
This commit changes the messages to only show when debugging is enabled.
---
gnome-session/main.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/gnome-session/main.c b/gnome-session/main.c
index b1ac3850..0e75eecf 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -193,72 +193,78 @@ require_dbus_session (int argc,
g_return_val_if_fail (!g_str_has_prefix (argv[0], "dbus-launch"),
TRUE);
/* +2 for our new arguments, +1 for NULL */
new_argv = g_malloc ((argc + 3) * sizeof (*argv));
new_argv[0] = "dbus-launch";
new_argv[1] = "--exit-with-session";
for (i = 0; i < argc; i++) {
new_argv[i + 2] = argv[i];
}
new_argv[i + 2] = NULL;
if (!execvp ("dbus-launch", new_argv)) {
g_set_error (error,
G_SPAWN_ERROR,
G_SPAWN_ERROR_FAILED,
"No session bus and could not exec dbus-launch: %s",
g_strerror (errno));
return FALSE;
}
/* Should not be reached */
return TRUE;
}
static gboolean
check_gl (GError **error)
{
int status;
+ g_autofree char *error_output = NULL;
+
char *argv[] = { LIBEXECDIR "/gnome-session-check-accelerated", NULL };
if (getenv ("DISPLAY") == NULL) {
/* Not connected to X11, someone else will take care of checking GL */
return TRUE;
}
- if (!g_spawn_sync (NULL, (char **) argv, NULL, 0, NULL, NULL, &gl_renderer, NULL,
+ if (!g_spawn_sync (NULL, (char **) argv, NULL, 0, NULL, NULL, &gl_renderer, &error_output,
&status, error)) {
return FALSE;
}
+ if (error_output != NULL) {
+ g_debug ("%s", error_output);
+ }
+
return g_spawn_check_exit_status (status, error);
}
static void
initialize_gio (void)
{
char *disable_fuse = NULL;
char *use_vfs = NULL;
disable_fuse = g_strdup (g_getenv ("GVFS_DISABLE_FUSE"));
use_vfs = g_strdup (g_getenv ("GIO_USE_VFS"));
g_setenv ("GVFS_DISABLE_FUSE", "1", TRUE);
g_setenv ("GIO_USE_VFS", "local", TRUE);
g_vfs_get_default ();
if (use_vfs) {
g_setenv ("GIO_USE_VFS", use_vfs, TRUE);
g_free (use_vfs);
} else {
g_unsetenv ("GIO_USE_VFS");
}
if (disable_fuse) {
g_setenv ("GVFS_DISABLE_FUSE", disable_fuse, TRUE);
g_free (disable_fuse);
} else {
g_unsetenv ("GVFS_DISABLE_FUSE");
}
}
--
2.33.1

View File

@ -0,0 +1,124 @@
From 06271eea2a12970fbe73b3d3f2c6ae5d79339379 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Mon, 29 Jun 2020 15:15:48 -0400
Subject: [PATCH] session-selector: show cursor explicitly
Normally the window manager would show the cursor at start up, but
the session selector runs when no window manager is present.
This commit makes the session selector explicitly set a cursor, so
users can interact with the dialog using the mouse.
---
tools/gnome-session-selector.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tools/gnome-session-selector.c b/tools/gnome-session-selector.c
index 71892c43..9225639e 100644
--- a/tools/gnome-session-selector.c
+++ b/tools/gnome-session-selector.c
@@ -594,60 +594,61 @@ auto_save_next_session_if_needed (void)
static int
compare_sessions (GtkTreeModel *model,
GtkTreeIter *a,
GtkTreeIter *b,
gpointer data)
{
char *name_a, *name_b;
int result;
gtk_tree_model_get (model, a, 0, &name_a, -1);
gtk_tree_model_get (model, b, 0, &name_b, -1);
result = g_utf8_collate (name_a, name_b);
g_free (name_a);
g_free (name_b);
return result;
}
static void
on_map (GtkWidget *widget,
gpointer data)
{
gdk_window_focus (gtk_widget_get_window (widget), GDK_CURRENT_TIME);
}
int
main (int argc, char *argv[])
{
+ GdkCursor *cursor;
GtkWidget *window;
GtkWidget *widget;
GtkCellRenderer *cell;
GtkTreeViewColumn *column;
GtkTreeSelection *selection;
GError *error;
if (getenv ("SESSION_MANAGER") != NULL)
return 1;
gtk_init (&argc, &argv);
if (argc > 1) {
g_print ("create and select session\n");
if (!create_and_select_session (argv[1]))
return 1;
else
return 0;
}
builder = gtk_builder_new ();
gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE);
error = NULL;
if (!gtk_builder_add_from_file (builder, GTKBUILDER_DIR "/" "session-selector.ui", &error)) {
g_warning ("Could not load file 'session-selector.ui': %s", error->message);
exit (1);
}
window = (GtkWidget *) gtk_builder_get_object (builder, "main-window");
@@ -663,36 +664,40 @@ main (int argc, char *argv[])
session_list = (GtkWidget *) gtk_builder_get_object (builder, "session-list");
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (session_list));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
populate_session_list (session_list);
cell = gtk_cell_renderer_text_new ();
g_signal_connect (cell, "edited", G_CALLBACK (on_row_edited), NULL);
column = gtk_tree_view_column_new_with_attributes ("", cell, "text", 0, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (session_list), GTK_TREE_VIEW_COLUMN (column));
g_signal_connect (session_list, "row-activated", G_CALLBACK (on_row_activated), NULL);
g_signal_connect (selection, "changed",
G_CALLBACK (on_selection_changed), NULL);
widget = (GtkWidget *) gtk_builder_get_object (builder, "new-session");
g_signal_connect (widget, "clicked", G_CALLBACK (on_new_session_clicked), NULL);
widget = (GtkWidget *) gtk_builder_get_object (builder, "remove-session");
g_signal_connect (widget, "clicked", G_CALLBACK (on_remove_session_clicked), NULL);
widget = (GtkWidget *) gtk_builder_get_object (builder, "rename-session");
g_signal_connect (widget, "clicked", G_CALLBACK (on_rename_session_clicked), NULL);
widget = (GtkWidget *) gtk_builder_get_object (builder, "continue-button");
g_signal_connect (widget, "clicked", G_CALLBACK (on_continue_clicked), NULL);
g_signal_connect (window, "map", G_CALLBACK (on_map), NULL);
gtk_widget_show (window);
+ cursor = gdk_cursor_new_from_name (gtk_widget_get_display (window),
+ "default");
+ gdk_window_set_cursor (gtk_widget_get_window (window), cursor);
+
gtk_main ();
auto_save_next_session_if_needed ();
return 0;
}
--
2.26.0

3
20-redhat-kiosk.conf Normal file
View File

@ -0,0 +1,3 @@
Section "ServerFlags"
Option "DontVTSwitch" "on"
EndSection

1
EMPTY
View File

@ -1 +0,0 @@

View File

@ -0,0 +1,5 @@
[Desktop Entry]
Name=Kiosk
Type=Application
Exec=redhat-kiosk

View File

@ -0,0 +1,13 @@
[Desktop Entry]
Type=Application
Name=Mutter
Comment=Window manager
Exec=/usr/bin/mutter
Categories=GNOME;GTK;Core;
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
X-GNOME-Provides=windowmanager;
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=false
X-GNOME-HiddenUnderSystemd=true

6
com.redhat.Kiosk.desktop Normal file
View File

@ -0,0 +1,6 @@
[Desktop Entry]
Name=Kiosk
Comment=Kiosk mode
Exec=/usr/bin/gnome-session --session=redhat-kiosk
DesktopNames=Red-Hat-Kiosk;GNOME;

View File

@ -0,0 +1,12 @@
--- gnome-session/data/hardware-compatibility 2012-03-21 16:30:06.269104695 -0700
+++ gnome-session/data/hardware-compatibility.new 2012-03-22 23:26:37.201967075 -0700
@@ -19,6 +19,9 @@
-Mesa DRI R[12]00[^[:digit:]]
-Mesa DRI R[12]00$
+# NV30 family on Nouveau: https://bugzilla.redhat.com/show_bug.cgi?id=745202
+-Gallium .* on NV3[0-9A-F]$
+
# Old Mesa software GL renderer
-software rasterizer

View File

@ -0,0 +1,12 @@
diff -up gnome-session-3.6.2/data/hardware-compatibility.jx gnome-session-3.6.2/data/hardware-compatibility
--- gnome-session-3.6.2/data/hardware-compatibility.jx 2012-12-10 12:43:06.000000000 -0500
+++ gnome-session-3.6.2/data/hardware-compatibility 2012-12-10 12:43:50.424352484 -0500
@@ -23,7 +23,7 @@
-Gallium .* on NV3[0-9A-F]$
# Old Mesa software GL renderer
--software rasterizer
+#software rasterizer
# Gallium has softpipe; we explicitly enable llvmpipe
-softpipe

1565
gnome-session.spec Normal file

File diff suppressed because it is too large Load Diff

27
gnome-xorg.desktop Normal file
View File

@ -0,0 +1,27 @@
[Desktop Entry]
Name[de]=Standard (X11 Anzeige-Server)
Name[es]=Estándar (servidor gráfico X11)
Name[fr]=Standard (serveur affichage X11)
Name[it]=Standard (server grafico X11)
Name[ja]= (X11 )
Name[ko]= (X11 )
Name[pt_BR]=Padrão (servidor de exibição X11)
Name[ru]=Стандартный (дисплейный сервер X11)
Name[zh_CN]=X11
Name[zh_TW]=X11
Name=Standard (X11 display server)
Comment[de]=Diese Sitzung meldet Sie bei GNOME an
Comment[es]=Esta sesión accede a GNOME
Comment[fr]=Cette session vous connecte dans GNOME
Comment[it]=Questa sessione esegue l'accesso in GNOME
Comment[ja]= GNOME
Comment[ko]=
Comment[pt_BR]=Essa sessão o leva ao GNOME
Comment[ru]=Этот сеанс позволяет вам войти в GNOME
Comment[zh_CN]= GNOME
Comment[zh_TW]= GNOME
Comment=This session logs you into GNOME
Exec=gnome-session
TryExec=gnome-session
Type=Application
DesktopNames=GNOME

27
gnome.desktop Normal file
View File

@ -0,0 +1,27 @@
[Desktop Entry]
Name[de]=Standard (Wayland Anzeige-Server)
Name[es]=Estándar (servidor gráfico Wayland)
Name[fr]=Standard (serveur affichage Wayland)
Name[it]=Standard (server grafico Wayland)
Name[ja]= (Wayland )
Name[ko]= (Wayland )
Name[pt_BR]=Padrão (servidor de exibição Wayland)
Name[ru]=Стандартный (дисплейный сервер Wayland)
Name[zh_CN]=Wayland
Name[zh_TW]=Wayland
Name=Standard (Wayland display server)
Comment[de]=Diese Sitzung meldet Sie bei GNOME an
Comment[es]=Esta sesión accede a GNOME
Comment[fr]=Cette session vous connecte dans GNOME
Comment[it]=Questa sessione esegue l'accesso in GNOME
Comment[ja]= GNOME
Comment[ko]=
Comment[pt_BR]=Essa sessão o leva ao GNOME
Comment[ru]=Этот сеанс позволяет вам войти в GNOME
Comment[zh_CN]= GNOME
Comment[zh_TW]= GNOME
Comment=This session logs you into GNOME
Exec=gnome-session
TryExec=gnome-session
Type=Application
DesktopNames=GNOME

26
redhat-kiosk Executable file
View File

@ -0,0 +1,26 @@
#!/bin/sh
if [ ! -e ~/.local/bin/redhat-kiosk ]; then
mkdir -p ~/.local/bin ~/.config
cat > ~/.local/bin/redhat-kiosk << EOF
#!/bin/sh
# This script is located in ~/.local/bin.
# It's provided as an example script to show how
# the kiosk session works. At the moment, the script
# just starts a text editor open to itself, but it
# should get customized to instead start a full screen
# application designed for the kiosk deployment.
# The "while true" bit just makes sure the application gets
# restarted if it dies for whatever reason.
while true; do
gedit ~/.local/bin/redhat-kiosk
done
EOF
chmod +x ~/.local/bin/redhat-kiosk
touch ~/.config/gnome-initial-setup-done
fi
exec ~/.local/bin/redhat-kiosk "$@"

3
redhat-kiosk.session Normal file
View File

@ -0,0 +1,3 @@
[GNOME Session]
Name=Kiosk
RequiredComponents=com.redhat.Kiosk.WindowManager;com.redhat.Kiosk.Script;

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (gnome-session-3.28.1.tar.xz) = ceeacb3cb4729d4b0a646220097a49359d1eb85ec20cd5d5a44c273b661d41ee83caaf6598def06c4e89b5f785f9317b1171b5550bf8f5634bc882a21e5e685b