[gdm/fix-jump-back-to-login-screen: 12/21] gdm-x-session: run session bus on non-seat0 seats




commit d2947d36645e1bdaf31fede470df89b83ef8ea3a
Author: Ray Strode <rstrode redhat com>
Date:   Wed Feb 5 15:20:48 2020 -0500

    gdm-x-session: run session bus on non-seat0 seats
    
    GNOME doesn't deal very well with multiple sessions
    running on a multiple seats at the moment.
    
    Until that's fixed, ensure sessions run on auxillary
    seats get their own session bus.

 daemon/gdm-session.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index a65fa0f9f..f13b54afc 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -2891,6 +2891,7 @@ gdm_session_start_session (GdmSession *self,
         gboolean                is_x11 = TRUE;
         gboolean                run_launcher = FALSE;
         gboolean                allow_remote_connections = FALSE;
+        gboolean                run_separate_bus = FALSE;
         char                   *command;
         char                   *program;
         gboolean               register_session;
@@ -2921,6 +2922,10 @@ gdm_session_start_session (GdmSession *self,
 
         register_session = !gdm_session_session_registers (self);
 
+        if (g_strcmp0 (self->display_seat_id, "seat0") != 0 && !run_launcher) {
+                run_separate_bus = TRUE;
+        }
+
         if (self->selected_program == NULL) {
                 gboolean run_xsession_script;
 
@@ -2949,7 +2954,11 @@ gdm_session_start_session (GdmSession *self,
                                                            command);
                         }
                 } else if (run_xsession_script) {
-                        program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command);
+                        if (run_separate_bus) {
+                                program = g_strdup_printf ("dbus-run-session -- " GDMCONFDIR "/Xsession 
\"%s\"", command);
+                        } else {
+                                program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command);
+                        }
                 } else {
                         program = g_strdup (command);
                 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]