[gdm] daemon: Rename GdmWelcomeSession to GdmLaunchEnvironment



commit 2ebfa91823db74a5aea680e6c561a09b709b84ac
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Tue Jul 17 17:30:36 2012 -0400

    daemon: Rename GdmWelcomeSession to GdmLaunchEnvironment
    
    "GdmWelcomeSession" was always a sort of bad name, as it is not a
    GdmSession, itself (it has-a GdmSession), and it's unnecessarily generic;
    it doesn't really have anything to do with "Welcome" or "Session"
    itself. It managed a non-user GdmSession, spawned the process in the
    correct environment (spawning a DBus daemon if need be) and made sure to
    keep track of it until it died. I think "GdmLaunchEnvironment" is an
    appropriate name for this.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=678057

 daemon/Makefile.am                                 |    8 +-
 ...-welcome-session.c => gdm-launch-environment.c} |  460 ++++++++++----------
 daemon/gdm-launch-environment.h                    |   73 +++
 daemon/gdm-simple-slave.c                          |  101 +++--
 daemon/gdm-welcome-session.h                       |   73 ---
 daemon/gdm-xdmcp-chooser-slave.c                   |   48 +-
 data/Makefile.am                                   |    4 +-
 ...{gdm-welcome.pam => gdm-launch-environment.pam} |    0
 ...{gdm-welcome.pam => gdm-launch-environment.pam} |    0
 9 files changed, 385 insertions(+), 382 deletions(-)
---
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index b7c86c4..1e497e5 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -150,8 +150,8 @@ endif
 
 gdm_simple_slave_SOURCES = 		\
 	simple-slave-main.c 		\
-	gdm-welcome-session.c		\
-	gdm-welcome-session.h		\
+	gdm-launch-environment.c	\
+	gdm-launch-environment.h	\
 	gdm-server.c			\
 	gdm-server.h			\
 	gdm-session.c			\
@@ -208,8 +208,8 @@ gdm_xdmcp_chooser_slave_SOURCES = 		\
 	gdm-session-worker-common.h		\
 	gdm-session-worker-job.c		\
 	gdm-session-worker-job.h		\
-	gdm-welcome-session.c			\
-	gdm-welcome-session.h			\
+	gdm-launch-environment.c		\
+	gdm-launch-environment.h		\
 	gdm-xerrors.h				\
 	gdm-xerrors.c				\
 	gdm-slave.c				\
diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-launch-environment.c
similarity index 66%
rename from daemon/gdm-welcome-session.c
rename to daemon/gdm-launch-environment.c
index 2662ecf..4630707 100644
--- a/daemon/gdm-welcome-session.c
+++ b/daemon/gdm-launch-environment.c
@@ -44,7 +44,7 @@
 #include "gdm-common.h"
 
 #include "gdm-session-enum-types.h"
-#include "gdm-welcome-session.h"
+#include "gdm-launch-environment.h"
 
 #define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch"
 
@@ -52,9 +52,9 @@
 
 extern char **environ;
 
-#define GDM_WELCOME_SESSION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_WELCOME_SESSION, GdmWelcomeSessionPrivate))
+#define GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentPrivate))
 
-struct GdmWelcomeSessionPrivate
+struct GdmLaunchEnvironmentPrivate
 {
         GdmSession     *session;
         char           *command;
@@ -104,11 +104,11 @@ enum {
 
 static guint signals [LAST_SIGNAL] = { 0, };
 
-static void     gdm_welcome_session_class_init    (GdmWelcomeSessionClass *klass);
-static void     gdm_welcome_session_init          (GdmWelcomeSession      *welcome_session);
-static void     gdm_welcome_session_finalize      (GObject                *object);
+static void     gdm_launch_environment_class_init    (GdmLaunchEnvironmentClass *klass);
+static void     gdm_launch_environment_init          (GdmLaunchEnvironment      *launch_environment);
+static void     gdm_launch_environment_finalize      (GObject                   *object);
 
-G_DEFINE_TYPE (GdmWelcomeSession, gdm_welcome_session, G_TYPE_OBJECT)
+G_DEFINE_TYPE (GdmLaunchEnvironment, gdm_launch_environment, G_TYPE_OBJECT)
 
 static void
 listify_hash (const char *key,
@@ -117,7 +117,7 @@ listify_hash (const char *key,
 {
         char *str;
         str = g_strdup_printf ("%s=%s", key, value);
-        g_debug ("GdmWelcomeSession: welcome environment: %s", str);
+        g_debug ("GdmLaunchEnvironment: launch environment: %s", str);
         g_ptr_array_add (env, str);
 }
 
@@ -225,8 +225,8 @@ next_line:
 }
 
 static GHashTable *
-build_welcome_environment (GdmWelcomeSession *welcome_session,
-                           gboolean           start_session)
+build_launch_environment (GdmLaunchEnvironment *launch_environment,
+                          gboolean              start_session)
 {
         GHashTable    *hash;
         struct passwd *pwent;
@@ -265,18 +265,18 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
                                               system_data_dirs));
         g_free (system_data_dirs);
 
-        if (welcome_session->priv->dbus_bus_address != NULL) {
+        if (launch_environment->priv->dbus_bus_address != NULL) {
                 g_hash_table_insert (hash,
                                      g_strdup ("DBUS_SESSION_BUS_ADDRESS"),
-                                     g_strdup (welcome_session->priv->dbus_bus_address));
+                                     g_strdup (launch_environment->priv->dbus_bus_address));
         }
 
-        g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (welcome_session->priv->x11_authority_file));
-        g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (welcome_session->priv->x11_display_name));
+        g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (launch_environment->priv->x11_authority_file));
+        g_hash_table_insert (hash, g_strdup ("DISPLAY"), g_strdup (launch_environment->priv->x11_display_name));
 
-        g_hash_table_insert (hash, g_strdup ("LOGNAME"), g_strdup (welcome_session->priv->user_name));
-        g_hash_table_insert (hash, g_strdup ("USER"), g_strdup (welcome_session->priv->user_name));
-        g_hash_table_insert (hash, g_strdup ("USERNAME"), g_strdup (welcome_session->priv->user_name));
+        g_hash_table_insert (hash, g_strdup ("LOGNAME"), g_strdup (launch_environment->priv->user_name));
+        g_hash_table_insert (hash, g_strdup ("USER"), g_strdup (launch_environment->priv->user_name));
+        g_hash_table_insert (hash, g_strdup ("USERNAME"), g_strdup (launch_environment->priv->user_name));
 
         g_hash_table_insert (hash, g_strdup ("GDM_VERSION"), g_strdup (VERSION));
         g_hash_table_remove (hash, "MAIL");
@@ -285,7 +285,7 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
         g_hash_table_insert (hash, g_strdup ("PWD"), g_strdup ("/"));
         g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup ("/bin/sh"));
 
-        gdm_get_pwent_for_name (welcome_session->priv->user_name, &pwent);
+        gdm_get_pwent_for_name (launch_environment->priv->user_name, &pwent);
         if (pwent != NULL) {
                 if (pwent->pw_dir != NULL && pwent->pw_dir[0] != '\0') {
                         g_hash_table_insert (hash, g_strdup ("HOME"), g_strdup (pwent->pw_dir));
@@ -295,10 +295,10 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
                 g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup (pwent->pw_shell));
         }
 
-        if (start_session && welcome_session->priv->x11_display_seat_id != NULL) {
+        if (start_session && launch_environment->priv->x11_display_seat_id != NULL) {
                 char *seat_id;
 
-                seat_id = welcome_session->priv->x11_display_seat_id;
+                seat_id = launch_environment->priv->x11_display_seat_id;
                 if (g_str_has_prefix (seat_id, "/org/freedesktop/ConsoleKit/")) {
                         seat_id += strlen ("/org/freedesktop/ConsoleKit/");
                 }
@@ -316,13 +316,13 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
 }
 
 static GPtrArray *
-get_welcome_environment (GdmWelcomeSession *welcome_session,
-                         gboolean           start_session)
+get_launch_environment (GdmLaunchEnvironment *launch_environment,
+                        gboolean              start_session)
 {
         GHashTable    *hash;
         GPtrArray     *env;
 
-        hash = build_welcome_environment (welcome_session, start_session);
+        hash = build_launch_environment (launch_environment, start_session);
 
         env = g_ptr_array_new ();
         g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
@@ -334,17 +334,17 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
 }
 
 static gboolean
-stop_dbus_daemon (GdmWelcomeSession *welcome_session)
+stop_dbus_daemon (GdmLaunchEnvironment *launch_environment)
 {
         int res;
 
-        if (welcome_session->priv->dbus_pid > 0) {
-                g_debug ("GdmWelcomeSession: Stopping D-Bus daemon");
-                res = gdm_signal_pid (-1 * welcome_session->priv->dbus_pid, SIGTERM);
+        if (launch_environment->priv->dbus_pid > 0) {
+                g_debug ("GdmLaunchEnvironment: Stopping D-Bus daemon");
+                res = gdm_signal_pid (-1 * launch_environment->priv->dbus_pid, SIGTERM);
                 if (res < 0) {
                         g_warning ("Unable to kill D-Bus daemon");
                 } else {
-                        welcome_session->priv->dbus_pid = 0;
+                        launch_environment->priv->dbus_pid = 0;
                 }
         }
         return TRUE;
@@ -410,15 +410,15 @@ spawn_child_setup (SpawnChildData *data)
                 _exit (1);
         }
 
-        g_debug ("GdmWelcomeSession: Setting up run time dir %s", data->runtime_dir);
+        g_debug ("GdmLaunchEnvironment: Setting up run time dir %s", data->runtime_dir);
         g_mkdir (data->runtime_dir, 0755);
         res = chown (data->runtime_dir, pwent->pw_uid, pwent->pw_gid);
         if (res == -1) {
-                g_warning ("GdmWelcomeSession: Error setting owner of run time directory: %s",
+                g_warning ("GdmLaunchEnvironment: Error setting owner of run time directory: %s",
                            g_strerror (errno));
         }
 
-        g_debug ("GdmWelcomeSession: Changing (uid:gid) for child process to (%d:%d)",
+        g_debug ("GdmLaunchEnvironment: Changing (uid:gid) for child process to (%d:%d)",
                  pwent->pw_uid,
                  grent->gr_gid);
 
@@ -454,7 +454,7 @@ spawn_child_setup (SpawnChildData *data)
         }
 
         if (setsid () < 0) {
-                g_debug ("GdmWelcomeSession: could not set pid '%u' as leader of new session and process group - %s",
+                g_debug ("GdmLaunchEnvironment: could not set pid '%u' as leader of new session and process group - %s",
                          (guint) getpid (), g_strerror (errno));
                 _exit (2);
         }
@@ -617,7 +617,7 @@ parse_dbus_launch_output (const char *output,
 }
 
 static gboolean
-start_dbus_daemon (GdmWelcomeSession *welcome_session)
+start_dbus_daemon (GdmLaunchEnvironment *launch_environment)
 {
         gboolean   res;
         char      *std_out;
@@ -626,18 +626,18 @@ start_dbus_daemon (GdmWelcomeSession *welcome_session)
         GError    *error;
         GPtrArray *env;
 
-        g_debug ("GdmWelcomeSession: Starting D-Bus daemon");
+        g_debug ("GdmLaunchEnvironment: Starting D-Bus daemon");
 
-        env = get_welcome_environment (welcome_session, FALSE);
+        env = get_launch_environment (launch_environment, FALSE);
 
         std_out = NULL;
         std_err = NULL;
         error = NULL;
         res = spawn_command_line_sync_as_user (DBUS_LAUNCH_COMMAND,
-                                               welcome_session->priv->user_name,
-                                               welcome_session->priv->group_name,
-                                               welcome_session->priv->x11_display_seat_id,
-                                               welcome_session->priv->runtime_dir,
+                                               launch_environment->priv->user_name,
+                                               launch_environment->priv->group_name,
+                                               launch_environment->priv->x11_display_seat_id,
+                                               launch_environment->priv->runtime_dir,
                                                NULL, /* log file */
                                                (char **)env->pdata,
                                                &std_out,
@@ -655,12 +655,12 @@ start_dbus_daemon (GdmWelcomeSession *welcome_session)
 
         /* pull the address and pid from the output */
         res = parse_dbus_launch_output (std_out,
-                                        &welcome_session->priv->dbus_bus_address,
-                                        &welcome_session->priv->dbus_pid);
+                                        &launch_environment->priv->dbus_bus_address,
+                                        &launch_environment->priv->dbus_pid);
         if (! res) {
                 g_warning ("Unable to parse D-Bus launch output");
         } else {
-                g_debug ("GdmWelcomeSession: Started D-Bus daemon on pid %d", welcome_session->priv->dbus_pid);
+                g_debug ("GdmLaunchEnvironment: Started D-Bus daemon on pid %d", launch_environment->priv->dbus_pid);
         }
  out:
         g_free (std_out);
@@ -671,99 +671,99 @@ start_dbus_daemon (GdmWelcomeSession *welcome_session)
 static void
 on_session_setup_complete (GdmSession        *session,
                            const char        *service_name,
-                           GdmWelcomeSession *welcome_session)
+                           GdmLaunchEnvironment *launch_environment)
 {
         GHashTable       *hash;
         GHashTableIter    iter;
         gpointer          key, value;
 
-        hash = build_welcome_environment (welcome_session, TRUE);
+        hash = build_launch_environment (launch_environment, TRUE);
 
         g_hash_table_iter_init (&iter, hash);
         while (g_hash_table_iter_next (&iter, &key, &value)) {
-                gdm_session_set_environment_variable (welcome_session->priv->session, key, value);
+                gdm_session_set_environment_variable (launch_environment->priv->session, key, value);
         }
         g_hash_table_destroy (hash);
 
-        gdm_session_select_session_type (welcome_session->priv->session, "LoginWindow");
+        gdm_session_select_session_type (launch_environment->priv->session, "LoginWindow");
 }
 
 static void
-on_session_opened (GdmSession        *session,
-                   const char        *service_name,
-                   const char        *session_id,
-                   GdmWelcomeSession *welcome_session)
+on_session_opened (GdmSession           *session,
+                   const char           *service_name,
+                   const char           *session_id,
+                   GdmLaunchEnvironment *launch_environment)
 {
-        welcome_session->priv->session_id = g_strdup (session_id);
+        launch_environment->priv->session_id = g_strdup (session_id);
 
-        g_signal_emit (G_OBJECT (welcome_session), signals [OPENED], 0);
-        gdm_session_start_session (welcome_session->priv->session, service_name);
+        g_signal_emit (G_OBJECT (launch_environment), signals [OPENED], 0);
+        gdm_session_start_session (launch_environment->priv->session, service_name);
 }
 
 static void
-on_session_started (GdmSession        *session,
-                    const char        *service_name,
-                    int                pid,
-                    GdmWelcomeSession *welcome_session)
+on_session_started (GdmSession           *session,
+                    const char           *service_name,
+                    int                   pid,
+                    GdmLaunchEnvironment *launch_environment)
 {
-        welcome_session->priv->pid = pid;
-        g_signal_emit (G_OBJECT (welcome_session), signals [STARTED], 0);
+        launch_environment->priv->pid = pid;
+        g_signal_emit (G_OBJECT (launch_environment), signals [STARTED], 0);
 }
 
 static void
-on_session_exited (GdmSession        *session,
-                   int                exit_code,
-                   GdmWelcomeSession *welcome_session)
+on_session_exited (GdmSession           *session,
+                   int                   exit_code,
+                   GdmLaunchEnvironment *launch_environment)
 {
-        gdm_session_stop_conversation (welcome_session->priv->session, "gdm-welcome");
+        gdm_session_stop_conversation (launch_environment->priv->session, "gdm-launch-environment");
 
-        g_signal_emit (G_OBJECT (welcome_session), signals [EXITED], 0, exit_code);
+        g_signal_emit (G_OBJECT (launch_environment), signals [EXITED], 0, exit_code);
 }
 
 static void
-on_session_died (GdmSession        *session,
-                 int                signal_number,
-                 GdmWelcomeSession *welcome_session)
+on_session_died (GdmSession           *session,
+                 int                   signal_number,
+                 GdmLaunchEnvironment *launch_environment)
 {
-        gdm_session_stop_conversation (welcome_session->priv->session, "gdm-welcome");
+        gdm_session_stop_conversation (launch_environment->priv->session, "gdm-launch-environment");
 
-        g_signal_emit (G_OBJECT (welcome_session), signals [DIED], 0, signal_number);
+        g_signal_emit (G_OBJECT (launch_environment), signals [DIED], 0, signal_number);
 }
 
 static void
-on_conversation_started (GdmSession        *session,
-                         const char        *service_name,
-                         GdmWelcomeSession *welcome_session)
+on_conversation_started (GdmSession           *session,
+                         const char           *service_name,
+                         GdmLaunchEnvironment *launch_environment)
 {
         char             *log_path;
         char             *log_file;
 
-        log_file = g_strdup_printf ("%s-greeter.log", welcome_session->priv->x11_display_name);
+        log_file = g_strdup_printf ("%s-greeter.log", launch_environment->priv->x11_display_name);
         log_path = g_build_filename (LOGDIR, log_file, NULL);
         g_free (log_file);
 
-        gdm_session_setup_for_program (welcome_session->priv->session,
-                                       "gdm-welcome",
-                                       welcome_session->priv->user_name,
+        gdm_session_setup_for_program (launch_environment->priv->session,
+                                       "gdm-launch-environment",
+                                       launch_environment->priv->user_name,
                                        log_path);
         g_free (log_path);
 }
 
 static void
-on_conversation_stopped (GdmSession        *session,
-                         const char        *service_name,
-                         GdmWelcomeSession *welcome_session)
+on_conversation_stopped (GdmSession           *session,
+                         const char           *service_name,
+                         GdmLaunchEnvironment *launch_environment)
 {
         GdmSession *conversation_session;
 
-        conversation_session = welcome_session->priv->session;
-        welcome_session->priv->session = NULL;
+        conversation_session = launch_environment->priv->session;
+        launch_environment->priv->session = NULL;
 
-        g_debug ("GdmWelcomeSession: conversation stopped");
-        stop_dbus_daemon (welcome_session);
+        g_debug ("GdmLaunchEnvironment: conversation stopped");
+        stop_dbus_daemon (launch_environment);
 
-        if (welcome_session->priv->pid > 1) {
-                g_signal_emit (G_OBJECT (welcome_session), signals [STOPPED], 0);
+        if (launch_environment->priv->pid > 1) {
+                g_signal_emit (G_OBJECT (launch_environment), signals [STOPPED], 0);
         }
 
         if (conversation_session != NULL) {
@@ -773,26 +773,26 @@ on_conversation_stopped (GdmSession        *session,
 }
 
 /**
- * gdm_welcome_session_start:
+ * gdm_launch_environment_start:
  * @disp: Pointer to a GdmDisplay structure
  *
- * Starts a local X welcome_session. Handles retries and fatal errors properly.
+ * Starts a local X launch_environment. Handles retries and fatal errors properly.
  */
 gboolean
-gdm_welcome_session_start (GdmWelcomeSession *welcome_session)
+gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
 {
         gboolean          res;
         struct passwd *passwd_entry;
         uid_t uid;
 
-        g_debug ("GdmWelcomeSession: Starting welcome...");
-        res = start_dbus_daemon (welcome_session);
+        g_debug ("GdmLaunchEnvironment: Starting...");
+        res = start_dbus_daemon (launch_environment);
 
         if (!res) {
                 return FALSE;
         }
 
-        res = gdm_get_pwent_for_name (welcome_session->priv->user_name,
+        res = gdm_get_pwent_for_name (launch_environment->priv->user_name,
                                       &passwd_entry);
 
         if (!res) {
@@ -800,211 +800,211 @@ gdm_welcome_session_start (GdmWelcomeSession *welcome_session)
         }
 
         uid = passwd_entry->pw_uid;
-        welcome_session->priv->session = gdm_session_new (welcome_session->priv->verification_mode,
-                                                          uid,
-                                                          welcome_session->priv->x11_display_name,
-                                                          welcome_session->priv->x11_display_hostname,
-                                                          welcome_session->priv->x11_display_device,
-                                                          welcome_session->priv->x11_display_seat_id,
-                                                          welcome_session->priv->x11_authority_file,
-                                                          welcome_session->priv->x11_display_is_local);
-
-        g_signal_connect (welcome_session->priv->session,
+        launch_environment->priv->session = gdm_session_new (launch_environment->priv->verification_mode,
+                                                             uid,
+                                                             launch_environment->priv->x11_display_name,
+                                                             launch_environment->priv->x11_display_hostname,
+                                                             launch_environment->priv->x11_display_device,
+                                                             launch_environment->priv->x11_display_seat_id,
+                                                             launch_environment->priv->x11_authority_file,
+                                                             launch_environment->priv->x11_display_is_local);
+
+        g_signal_connect (launch_environment->priv->session,
                           "conversation-started",
                           G_CALLBACK (on_conversation_started),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "conversation-stopped",
                           G_CALLBACK (on_conversation_stopped),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "setup-complete",
                           G_CALLBACK (on_session_setup_complete),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "session-opened",
                           G_CALLBACK (on_session_opened),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "session-started",
                           G_CALLBACK (on_session_started),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "session-exited",
                           G_CALLBACK (on_session_exited),
-                          welcome_session);
-        g_signal_connect (welcome_session->priv->session,
+                          launch_environment);
+        g_signal_connect (launch_environment->priv->session,
                           "session-died",
                           G_CALLBACK (on_session_died),
-                          welcome_session);
+                          launch_environment);
 
-        gdm_session_start_conversation (welcome_session->priv->session, "gdm-welcome");
-        gdm_session_select_program (welcome_session->priv->session, welcome_session->priv->command);
+        gdm_session_start_conversation (launch_environment->priv->session, "gdm-launch-environment");
+        gdm_session_select_program (launch_environment->priv->session, launch_environment->priv->command);
         return TRUE;
 }
 
 gboolean
-gdm_welcome_session_stop (GdmWelcomeSession *welcome_session)
+gdm_launch_environment_stop (GdmLaunchEnvironment *launch_environment)
 {
-        if (welcome_session->priv->pid > 1) {
-                gdm_signal_pid (welcome_session->priv->pid, SIGTERM);
+        if (launch_environment->priv->pid > 1) {
+                gdm_signal_pid (launch_environment->priv->pid, SIGTERM);
         } else {
-                if (welcome_session->priv->session != NULL) {
-                        gdm_session_stop_conversation (welcome_session->priv->session, "gdm-welcome");
-                        gdm_session_close (welcome_session->priv->session);
+                if (launch_environment->priv->session != NULL) {
+                        gdm_session_stop_conversation (launch_environment->priv->session, "gdm-launch-environment");
+                        gdm_session_close (launch_environment->priv->session);
 
-                        g_clear_object (&welcome_session->priv->session);
+                        g_clear_object (&launch_environment->priv->session);
                 } else {
-                        stop_dbus_daemon (welcome_session);
+                        stop_dbus_daemon (launch_environment);
                 }
 
-                g_signal_emit (G_OBJECT (welcome_session), signals [STOPPED], 0);
+                g_signal_emit (G_OBJECT (launch_environment), signals [STOPPED], 0);
         }
 
         return TRUE;
 }
 
 GdmSession *
-gdm_welcome_session_get_session (GdmWelcomeSession *welcome_session)
+gdm_launch_environment_get_session (GdmLaunchEnvironment *launch_environment)
 {
-        return welcome_session->priv->session;
+        return launch_environment->priv->session;
 }
 
 char *
-gdm_welcome_session_get_session_id (GdmWelcomeSession *welcome_session)
+gdm_launch_environment_get_session_id (GdmLaunchEnvironment *launch_environment)
 {
-        return g_strdup (welcome_session->priv->session_id);
+        return g_strdup (launch_environment->priv->session_id);
 }
 
 static void
-_gdm_welcome_session_set_verification_mode (GdmWelcomeSession           *welcome_session,
-                                            GdmSessionVerificationMode   verification_mode)
+_gdm_launch_environment_set_verification_mode (GdmLaunchEnvironment           *launch_environment,
+                                               GdmSessionVerificationMode      verification_mode)
 {
-        welcome_session->priv->verification_mode = verification_mode;
+        launch_environment->priv->verification_mode = verification_mode;
 }
 
 static void
-_gdm_welcome_session_set_x11_display_name (GdmWelcomeSession *welcome_session,
-                                           const char        *name)
+_gdm_launch_environment_set_x11_display_name (GdmLaunchEnvironment *launch_environment,
+                                              const char           *name)
 {
-        g_free (welcome_session->priv->x11_display_name);
-        welcome_session->priv->x11_display_name = g_strdup (name);
+        g_free (launch_environment->priv->x11_display_name);
+        launch_environment->priv->x11_display_name = g_strdup (name);
 }
 
 static void
-_gdm_welcome_session_set_x11_display_seat_id (GdmWelcomeSession *welcome_session,
-                                              const char        *sid)
+_gdm_launch_environment_set_x11_display_seat_id (GdmLaunchEnvironment *launch_environment,
+                                                 const char           *sid)
 {
-        g_free (welcome_session->priv->x11_display_seat_id);
-        welcome_session->priv->x11_display_seat_id = g_strdup (sid);
+        g_free (launch_environment->priv->x11_display_seat_id);
+        launch_environment->priv->x11_display_seat_id = g_strdup (sid);
 }
 
 static void
-_gdm_welcome_session_set_x11_display_hostname (GdmWelcomeSession *welcome_session,
-                                               const char        *name)
+_gdm_launch_environment_set_x11_display_hostname (GdmLaunchEnvironment *launch_environment,
+                                                  const char           *name)
 {
-        g_free (welcome_session->priv->x11_display_hostname);
-        welcome_session->priv->x11_display_hostname = g_strdup (name);
+        g_free (launch_environment->priv->x11_display_hostname);
+        launch_environment->priv->x11_display_hostname = g_strdup (name);
 }
 
 static void
-_gdm_welcome_session_set_x11_display_device (GdmWelcomeSession *welcome_session,
-                                             const char        *name)
+_gdm_launch_environment_set_x11_display_device (GdmLaunchEnvironment *launch_environment,
+                                                const char           *name)
 {
-        g_free (welcome_session->priv->x11_display_device);
-        welcome_session->priv->x11_display_device = g_strdup (name);
+        g_free (launch_environment->priv->x11_display_device);
+        launch_environment->priv->x11_display_device = g_strdup (name);
 }
 
 static void
-_gdm_welcome_session_set_x11_display_is_local (GdmWelcomeSession *welcome_session,
-                                               gboolean           is_local)
+_gdm_launch_environment_set_x11_display_is_local (GdmLaunchEnvironment *launch_environment,
+                                                  gboolean              is_local)
 {
-        welcome_session->priv->x11_display_is_local = is_local;
+        launch_environment->priv->x11_display_is_local = is_local;
 }
 
 static void
-_gdm_welcome_session_set_x11_authority_file (GdmWelcomeSession *welcome_session,
-                                             const char        *file)
+_gdm_launch_environment_set_x11_authority_file (GdmLaunchEnvironment *launch_environment,
+                                                const char           *file)
 {
-        g_free (welcome_session->priv->x11_authority_file);
-        welcome_session->priv->x11_authority_file = g_strdup (file);
+        g_free (launch_environment->priv->x11_authority_file);
+        launch_environment->priv->x11_authority_file = g_strdup (file);
 }
 
 static void
-_gdm_welcome_session_set_user_name (GdmWelcomeSession *welcome_session,
-                                    const char        *name)
+_gdm_launch_environment_set_user_name (GdmLaunchEnvironment *launch_environment,
+                                       const char           *name)
 {
-        g_free (welcome_session->priv->user_name);
-        welcome_session->priv->user_name = g_strdup (name);
+        g_free (launch_environment->priv->user_name);
+        launch_environment->priv->user_name = g_strdup (name);
 }
 
 static void
-_gdm_welcome_session_set_group_name (GdmWelcomeSession *welcome_session,
-                                     const char        *name)
+_gdm_launch_environment_set_group_name (GdmLaunchEnvironment *launch_environment,
+                                        const char           *name)
 {
-        g_free (welcome_session->priv->group_name);
-        welcome_session->priv->group_name = g_strdup (name);
+        g_free (launch_environment->priv->group_name);
+        launch_environment->priv->group_name = g_strdup (name);
 }
 
 static void
-_gdm_welcome_session_set_runtime_dir (GdmWelcomeSession *welcome_session,
-                                      const char        *dir)
+_gdm_launch_environment_set_runtime_dir (GdmLaunchEnvironment *launch_environment,
+                                         const char           *dir)
 {
-        g_free (welcome_session->priv->runtime_dir);
-        welcome_session->priv->runtime_dir = g_strdup (dir);
+        g_free (launch_environment->priv->runtime_dir);
+        launch_environment->priv->runtime_dir = g_strdup (dir);
 }
 
 static void
-_gdm_welcome_session_set_command (GdmWelcomeSession *welcome_session,
-                                  const char        *name)
+_gdm_launch_environment_set_command (GdmLaunchEnvironment *launch_environment,
+                                     const char           *name)
 {
-        g_free (welcome_session->priv->command);
-        welcome_session->priv->command = g_strdup (name);
+        g_free (launch_environment->priv->command);
+        launch_environment->priv->command = g_strdup (name);
 }
 
 static void
-gdm_welcome_session_set_property (GObject      *object,
-                                  guint         prop_id,
-                                  const GValue *value,
-                                  GParamSpec   *pspec)
+gdm_launch_environment_set_property (GObject      *object,
+                                     guint         prop_id,
+                                     const GValue *value,
+                                     GParamSpec   *pspec)
 {
-        GdmWelcomeSession *self;
+        GdmLaunchEnvironment *self;
 
-        self = GDM_WELCOME_SESSION (object);
+        self = GDM_LAUNCH_ENVIRONMENT (object);
 
         switch (prop_id) {
         case PROP_VERIFICATION_MODE:
-                _gdm_welcome_session_set_verification_mode (self, g_value_get_enum (value));
+                _gdm_launch_environment_set_verification_mode (self, g_value_get_enum (value));
                 break;
         case PROP_X11_DISPLAY_NAME:
-                _gdm_welcome_session_set_x11_display_name (self, g_value_get_string (value));
+                _gdm_launch_environment_set_x11_display_name (self, g_value_get_string (value));
                 break;
         case PROP_X11_DISPLAY_SEAT_ID:
-                _gdm_welcome_session_set_x11_display_seat_id (self, g_value_get_string (value));
+                _gdm_launch_environment_set_x11_display_seat_id (self, g_value_get_string (value));
                 break;
         case PROP_X11_DISPLAY_HOSTNAME:
-                _gdm_welcome_session_set_x11_display_hostname (self, g_value_get_string (value));
+                _gdm_launch_environment_set_x11_display_hostname (self, g_value_get_string (value));
                 break;
         case PROP_X11_DISPLAY_DEVICE:
-                _gdm_welcome_session_set_x11_display_device (self, g_value_get_string (value));
+                _gdm_launch_environment_set_x11_display_device (self, g_value_get_string (value));
                 break;
         case PROP_X11_DISPLAY_IS_LOCAL:
-                _gdm_welcome_session_set_x11_display_is_local (self, g_value_get_boolean (value));
+                _gdm_launch_environment_set_x11_display_is_local (self, g_value_get_boolean (value));
                 break;
         case PROP_X11_AUTHORITY_FILE:
-                _gdm_welcome_session_set_x11_authority_file (self, g_value_get_string (value));
+                _gdm_launch_environment_set_x11_authority_file (self, g_value_get_string (value));
                 break;
         case PROP_USER_NAME:
-                _gdm_welcome_session_set_user_name (self, g_value_get_string (value));
+                _gdm_launch_environment_set_user_name (self, g_value_get_string (value));
                 break;
         case PROP_GROUP_NAME:
-                _gdm_welcome_session_set_group_name (self, g_value_get_string (value));
+                _gdm_launch_environment_set_group_name (self, g_value_get_string (value));
                 break;
         case PROP_RUNTIME_DIR:
-                _gdm_welcome_session_set_runtime_dir (self, g_value_get_string (value));
+                _gdm_launch_environment_set_runtime_dir (self, g_value_get_string (value));
                 break;
         case PROP_COMMAND:
-                _gdm_welcome_session_set_command (self, g_value_get_string (value));
+                _gdm_launch_environment_set_command (self, g_value_get_string (value));
                 break;
         default:
                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -1013,14 +1013,14 @@ gdm_welcome_session_set_property (GObject      *object,
 }
 
 static void
-gdm_welcome_session_get_property (GObject    *object,
-                                  guint       prop_id,
-                                  GValue     *value,
-                                  GParamSpec *pspec)
+gdm_launch_environment_get_property (GObject    *object,
+                                     guint       prop_id,
+                                     GValue     *value,
+                                     GParamSpec *pspec)
 {
-        GdmWelcomeSession *self;
+        GdmLaunchEnvironment *self;
 
-        self = GDM_WELCOME_SESSION (object);
+        self = GDM_LAUNCH_ENVIRONMENT (object);
 
         switch (prop_id) {
         case PROP_VERIFICATION_MODE:
@@ -1063,15 +1063,15 @@ gdm_welcome_session_get_property (GObject    *object,
 }
 
 static void
-gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
+gdm_launch_environment_class_init (GdmLaunchEnvironmentClass *klass)
 {
         GObjectClass    *object_class = G_OBJECT_CLASS (klass);
 
-        object_class->get_property = gdm_welcome_session_get_property;
-        object_class->set_property = gdm_welcome_session_set_property;
-        object_class->finalize = gdm_welcome_session_finalize;
+        object_class->get_property = gdm_launch_environment_get_property;
+        object_class->set_property = gdm_launch_environment_set_property;
+        object_class->finalize = gdm_launch_environment_finalize;
 
-        g_type_class_add_private (klass, sizeof (GdmWelcomeSessionPrivate));
+        g_type_class_add_private (klass, sizeof (GdmLaunchEnvironmentPrivate));
 
         g_object_class_install_property (object_class,
                                          PROP_VERIFICATION_MODE,
@@ -1088,7 +1088,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                                                               "name",
                                                               NULL,
                                                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-         g_object_class_install_property (object_class,
+        g_object_class_install_property (object_class,
                                          PROP_X11_DISPLAY_SEAT_ID,
                                          g_param_spec_string ("x11-display-seat-id",
                                                               "seat id",
@@ -1155,7 +1155,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                 g_signal_new ("opened",
                               G_OBJECT_CLASS_TYPE (object_class),
                               G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET (GdmWelcomeSessionClass, opened),
+                              G_STRUCT_OFFSET (GdmLaunchEnvironmentClass, opened),
                               NULL,
                               NULL,
                               g_cclosure_marshal_VOID__VOID,
@@ -1165,7 +1165,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                 g_signal_new ("started",
                               G_OBJECT_CLASS_TYPE (object_class),
                               G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET (GdmWelcomeSessionClass, started),
+                              G_STRUCT_OFFSET (GdmLaunchEnvironmentClass, started),
                               NULL,
                               NULL,
                               g_cclosure_marshal_VOID__VOID,
@@ -1175,7 +1175,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                 g_signal_new ("stopped",
                               G_OBJECT_CLASS_TYPE (object_class),
                               G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET (GdmWelcomeSessionClass, stopped),
+                              G_STRUCT_OFFSET (GdmLaunchEnvironmentClass, stopped),
                               NULL,
                               NULL,
                               g_cclosure_marshal_VOID__VOID,
@@ -1185,7 +1185,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                 g_signal_new ("exited",
                               G_OBJECT_CLASS_TYPE (object_class),
                               G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET (GdmWelcomeSessionClass, exited),
+                              G_STRUCT_OFFSET (GdmLaunchEnvironmentClass, exited),
                               NULL,
                               NULL,
                               g_cclosure_marshal_VOID__INT,
@@ -1196,7 +1196,7 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
                 g_signal_new ("died",
                               G_OBJECT_CLASS_TYPE (object_class),
                               G_SIGNAL_RUN_FIRST,
-                              G_STRUCT_OFFSET (GdmWelcomeSessionClass, died),
+                              G_STRUCT_OFFSET (GdmLaunchEnvironmentClass, died),
                               NULL,
                               NULL,
                               g_cclosure_marshal_VOID__INT,
@@ -1206,44 +1206,44 @@ gdm_welcome_session_class_init (GdmWelcomeSessionClass *klass)
 }
 
 static void
-gdm_welcome_session_init (GdmWelcomeSession *welcome_session)
+gdm_launch_environment_init (GdmLaunchEnvironment *launch_environment)
 {
 
-        welcome_session->priv = GDM_WELCOME_SESSION_GET_PRIVATE (welcome_session);
+        launch_environment->priv = GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE (launch_environment);
 
-        welcome_session->priv->command = NULL;
-        welcome_session->priv->session = NULL;
+        launch_environment->priv->command = NULL;
+        launch_environment->priv->session = NULL;
 }
 
 static void
-gdm_welcome_session_finalize (GObject *object)
+gdm_launch_environment_finalize (GObject *object)
 {
-        GdmWelcomeSession *welcome_session;
+        GdmLaunchEnvironment *launch_environment;
 
         g_return_if_fail (object != NULL);
-        g_return_if_fail (GDM_IS_WELCOME_SESSION (object));
+        g_return_if_fail (GDM_IS_LAUNCH_ENVIRONMENT (object));
 
-        welcome_session = GDM_WELCOME_SESSION (object);
+        launch_environment = GDM_LAUNCH_ENVIRONMENT (object);
 
-        g_return_if_fail (welcome_session->priv != NULL);
+        g_return_if_fail (launch_environment->priv != NULL);
 
-        gdm_welcome_session_stop (welcome_session);
+        gdm_launch_environment_stop (launch_environment);
 
-        if (welcome_session->priv->session) {
-                g_object_unref (welcome_session->priv->session);
+        if (launch_environment->priv->session) {
+                g_object_unref (launch_environment->priv->session);
         }
 
-        g_free (welcome_session->priv->command);
-        g_free (welcome_session->priv->user_name);
-        g_free (welcome_session->priv->group_name);
-        g_free (welcome_session->priv->runtime_dir);
-        g_free (welcome_session->priv->x11_display_name);
-        g_free (welcome_session->priv->x11_display_seat_id);
-        g_free (welcome_session->priv->x11_display_device);
-        g_free (welcome_session->priv->x11_display_hostname);
-        g_free (welcome_session->priv->x11_authority_file);
-        g_free (welcome_session->priv->dbus_bus_address);
-        g_free (welcome_session->priv->session_id);
-
-        G_OBJECT_CLASS (gdm_welcome_session_parent_class)->finalize (object);
+        g_free (launch_environment->priv->command);
+        g_free (launch_environment->priv->user_name);
+        g_free (launch_environment->priv->group_name);
+        g_free (launch_environment->priv->runtime_dir);
+        g_free (launch_environment->priv->x11_display_name);
+        g_free (launch_environment->priv->x11_display_seat_id);
+        g_free (launch_environment->priv->x11_display_device);
+        g_free (launch_environment->priv->x11_display_hostname);
+        g_free (launch_environment->priv->x11_authority_file);
+        g_free (launch_environment->priv->dbus_bus_address);
+        g_free (launch_environment->priv->session_id);
+
+        G_OBJECT_CLASS (gdm_launch_environment_parent_class)->finalize (object);
 }
diff --git a/daemon/gdm-launch-environment.h b/daemon/gdm-launch-environment.h
new file mode 100644
index 0000000..be07b8b
--- /dev/null
+++ b/daemon/gdm-launch-environment.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann <jmccann redhat com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+
+#ifndef __GDM_LAUNCH_ENVIRONMENT_H
+#define __GDM_LAUNCH_ENVIRONMENT_H
+
+#include <glib-object.h>
+#include "gdm-session.h"
+
+G_BEGIN_DECLS
+
+#define GDM_TYPE_LAUNCH_ENVIRONMENT         (gdm_launch_environment_get_type ())
+#define GDM_LAUNCH_ENVIRONMENT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironment))
+#define GDM_LAUNCH_ENVIRONMENT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentClass))
+#define GDM_IS_LAUNCH_ENVIRONMENT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT))
+#define GDM_IS_LAUNCH_ENVIRONMENT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GDM_TYPE_LAUNCH_ENVIRONMENT))
+#define GDM_LAUNCH_ENVIRONMENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentClass))
+
+typedef struct GdmLaunchEnvironmentPrivate GdmLaunchEnvironmentPrivate;
+
+typedef struct
+{
+        GObject                   parent;
+        GdmLaunchEnvironmentPrivate *priv;
+} GdmLaunchEnvironment;
+
+typedef struct
+{
+        GObjectClass   parent_class;
+
+        /* methods */
+        gboolean (*start)          (GdmLaunchEnvironment  *launch_environment);
+        gboolean (*stop)           (GdmLaunchEnvironment  *launch_environment);
+
+
+        /* signals */
+        void (* opened)            (GdmLaunchEnvironment  *launch_environment);
+        void (* started)           (GdmLaunchEnvironment  *launch_environment);
+        void (* stopped)           (GdmLaunchEnvironment  *launch_environment);
+        void (* exited)            (GdmLaunchEnvironment  *launch_environment,
+                                    int                    exit_code);
+        void (* died)              (GdmLaunchEnvironment  *launch_environment,
+                                    int                    signal_number);
+} GdmLaunchEnvironmentClass;
+
+GType                 gdm_launch_environment_get_type           (void);
+
+gboolean              gdm_launch_environment_start              (GdmLaunchEnvironment *launch_environment);
+gboolean              gdm_launch_environment_stop               (GdmLaunchEnvironment *launch_environment);
+GdmSession *          gdm_launch_environment_get_session        (GdmLaunchEnvironment *launch_environment);
+char *                gdm_launch_environment_get_session_id     (GdmLaunchEnvironment *launch_environment);
+
+G_END_DECLS
+
+#endif /* __GDM_LAUNCH_ENVIRONMENT_H */
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index dc17a5b..c00fd80 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -50,7 +50,7 @@
 #include "gdm-server.h"
 #include "gdm-session.h"
 #include "gdm-session-glue.h"
-#include "gdm-welcome-session.h"
+#include "gdm-launch-environment.h"
 #include "gdm-settings-direct.h"
 #include "gdm-settings-keys.h"
 
@@ -76,8 +76,12 @@ struct GdmSimpleSlavePrivate
         guint              connection_attempts;
 
         GdmServer         *server;
+
+        /* we control the user session */
         GdmSession        *session;
-        GdmWelcomeSession *greeter;
+
+        /* this spawns and controls the greeter session */
+        GdmLaunchEnvironment *greeter_environment;
 
         GHashTable        *open_reauthentication_requests;
 
@@ -324,7 +328,7 @@ stop_greeter (GdmSimpleSlave *slave)
 
         g_debug ("GdmSimpleSlave: Stopping greeter");
 
-        if (slave->priv->greeter == NULL) {
+        if (slave->priv->greeter_environment == NULL) {
                 g_debug ("GdmSimpleSlave: No greeter running");
                 return;
         }
@@ -340,7 +344,7 @@ stop_greeter (GdmSimpleSlave *slave)
         }
         g_free (username);
 
-        gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
+        gdm_launch_environment_stop (GDM_LAUNCH_ENVIRONMENT (slave->priv->greeter_environment));
 }
 
 static void
@@ -388,11 +392,11 @@ start_session_timeout (GdmSimpleSlave  *slave)
                 g_free (slave->priv->start_session_service_name);
                 slave->priv->start_session_service_name = NULL;
         } else {
-                if (slave->priv->greeter == NULL) {
+                if (slave->priv->greeter_environment == NULL) {
                         /* auto login */
                         start_session (slave);
                 } else {
-                        /* Session actually gets started from on_greeter_session_stop */
+                        /* Session actually gets started from on_greeter_environment_session_stop */
                         stop_greeter (slave);
                 }
         }
@@ -705,8 +709,8 @@ create_new_session (GdmSimpleSlave  *slave)
 
         g_debug ("GdmSimpleSlave: Creating new session");
 
-        if (slave->priv->greeter != NULL) {
-                greeter_session = gdm_welcome_session_get_session (GDM_WELCOME_SESSION (slave->priv->greeter));
+        if (slave->priv->greeter_environment != NULL) {
+                greeter_session = gdm_launch_environment_get_session (GDM_LAUNCH_ENVIRONMENT (slave->priv->greeter_environment));
                 greeter_uid = gdm_session_get_allowed_user (greeter_session);
         } else {
                 greeter_uid = 0;
@@ -793,28 +797,28 @@ create_new_session (GdmSimpleSlave  *slave)
 }
 
 static void
-on_greeter_session_opened (GdmWelcomeSession *greeter,
-                           GdmSimpleSlave    *slave)
+on_greeter_environment_session_opened (GdmLaunchEnvironment *greeter_environment,
+                                       GdmSimpleSlave       *slave)
 {
         char       *session_id;
 
         g_debug ("GdmSimpleSlave: Greeter session opened");
-        session_id = gdm_welcome_session_get_session_id (GDM_WELCOME_SESSION (greeter));
+        session_id = gdm_launch_environment_get_session_id (GDM_LAUNCH_ENVIRONMENT (greeter_environment));
 
         g_object_set (GDM_SLAVE (slave), "session-id", session_id, NULL);
         g_free (session_id);
 }
 
 static void
-on_greeter_session_started (GdmWelcomeSession *greeter,
-                            GdmSimpleSlave    *slave)
+on_greeter_environment_session_started (GdmLaunchEnvironment *greeter_environment,
+                                        GdmSimpleSlave       *slave)
 {
         g_debug ("GdmSimpleSlave: Greeter started");
 }
 
 static void
-on_greeter_session_stopped (GdmWelcomeSession *greeter,
-                            GdmSimpleSlave    *slave)
+on_greeter_environment_session_stopped (GdmLaunchEnvironment *greeter_environment,
+                                        GdmSimpleSlave       *slave)
 {
         g_debug ("GdmSimpleSlave: Greeter stopped");
         if (slave->priv->start_session_service_name == NULL) {
@@ -823,15 +827,14 @@ on_greeter_session_stopped (GdmWelcomeSession *greeter,
                 start_session (slave);
         }
 
-        g_object_unref (slave->priv->greeter);
-        slave->priv->greeter = NULL;
-
+        g_object_unref (slave->priv->greeter_environment);
+        slave->priv->greeter_environment = NULL;
 }
 
 static void
-on_greeter_session_exited (GdmWelcomeSession    *greeter,
-                           int                   code,
-                           GdmSimpleSlave       *slave)
+on_greeter_environment_session_exited (GdmLaunchEnvironment    *greeter_environment,
+                                       int                      code,
+                                       GdmSimpleSlave          *slave)
 {
         g_debug ("GdmSimpleSlave: Greeter exited: %d", code);
         if (slave->priv->start_session_service_name == NULL) {
@@ -840,9 +843,9 @@ on_greeter_session_exited (GdmWelcomeSession    *greeter,
 }
 
 static void
-on_greeter_session_died (GdmWelcomeSession    *greeter,
-                         int                   signal,
-                         GdmSimpleSlave       *slave)
+on_greeter_environment_session_died (GdmLaunchEnvironment    *greeter_environment,
+                                     int                      signal,
+                                     GdmSimpleSlave          *slave)
 {
         g_debug ("GdmSimpleSlave: Greeter died: %d", signal);
         if (slave->priv->start_session_service_name == NULL) {
@@ -945,12 +948,12 @@ setup_server (GdmSimpleSlave *slave)
 #endif
 }
 
-static GdmWelcomeSession *
-create_greeter_session (const char *display_name,
-                        const char *seat_id,
-                        const char *display_device,
-                        const char *display_hostname,
-                        gboolean    display_is_local)
+static GdmLaunchEnvironment *
+create_greeter_environment (const char *display_name,
+                            const char *seat_id,
+                            const char *display_device,
+                            const char *display_hostname,
+                            gboolean    display_is_local)
 {
         gboolean debug = FALSE;
         char *command = BINDIR "/gnome-session -f";
@@ -961,7 +964,7 @@ create_greeter_session (const char *display_name,
                 command = BINDIR "/gnome-session -f --debug";
         }
 
-        return g_object_new (GDM_TYPE_WELCOME_SESSION,
+        return g_object_new (GDM_TYPE_LAUNCH_ENVIRONMENT,
                              "command", command,
                              "x11-display-name", display_name,
                              "x11-display-seat-id", seat_id,
@@ -1024,36 +1027,36 @@ start_greeter (GdmSimpleSlave *slave)
         gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/Init", GDM_USERNAME);
 
         g_debug ("GdmSimpleSlave: Creating greeter on %s %s %s", display_name, display_device, display_hostname);
-        slave->priv->greeter = create_greeter_session (display_name,
-                                                       seat_id,
-                                                       display_device,
-                                                       display_hostname,
-                                                       display_is_local);
-        g_signal_connect (slave->priv->greeter,
+        slave->priv->greeter_environment = create_greeter_environment (display_name,
+                                                                       seat_id,
+                                                                       display_device,
+                                                                       display_hostname,
+                                                                       display_is_local);
+        g_signal_connect (slave->priv->greeter_environment,
                           "opened",
-                          G_CALLBACK (on_greeter_session_opened),
+                          G_CALLBACK (on_greeter_environment_session_opened),
                           slave);
-        g_signal_connect (slave->priv->greeter,
+        g_signal_connect (slave->priv->greeter_environment,
                           "started",
-                          G_CALLBACK (on_greeter_session_started),
+                          G_CALLBACK (on_greeter_environment_session_started),
                           slave);
-        g_signal_connect (slave->priv->greeter,
+        g_signal_connect (slave->priv->greeter_environment,
                           "stopped",
-                          G_CALLBACK (on_greeter_session_stopped),
+                          G_CALLBACK (on_greeter_environment_session_stopped),
                           slave);
-        g_signal_connect (slave->priv->greeter,
+        g_signal_connect (slave->priv->greeter_environment,
                           "exited",
-                          G_CALLBACK (on_greeter_session_exited),
+                          G_CALLBACK (on_greeter_environment_session_exited),
                           slave);
-        g_signal_connect (slave->priv->greeter,
+        g_signal_connect (slave->priv->greeter_environment,
                           "died",
-                          G_CALLBACK (on_greeter_session_died),
+                          G_CALLBACK (on_greeter_environment_session_died),
                           slave);
-        g_object_set (slave->priv->greeter,
+        g_object_set (slave->priv->greeter_environment,
                       "x11-authority-file", auth_file,
                       NULL);
 
-        gdm_welcome_session_start (GDM_WELCOME_SESSION (slave->priv->greeter));
+        gdm_launch_environment_start (GDM_LAUNCH_ENVIRONMENT (slave->priv->greeter_environment));
 
         g_free (display_id);
         g_free (display_name);
@@ -1337,7 +1340,7 @@ gdm_simple_slave_stop (GdmSlave *slave)
 
         GDM_SLAVE_CLASS (gdm_simple_slave_parent_class)->stop (slave);
 
-        if (self->priv->greeter != NULL) {
+        if (self->priv->greeter_environment != NULL) {
                 stop_greeter (self);
         }
 
diff --git a/daemon/gdm-xdmcp-chooser-slave.c b/daemon/gdm-xdmcp-chooser-slave.c
index b4c6bff..fef0ff8 100644
--- a/daemon/gdm-xdmcp-chooser-slave.c
+++ b/daemon/gdm-xdmcp-chooser-slave.c
@@ -42,7 +42,7 @@
 #include "gdm-xdmcp-chooser-slave-glue.h"
 
 #include "gdm-server.h"
-#include "gdm-welcome-session.h"
+#include "gdm-launch-environment.h"
 #include "gdm-settings-direct.h"
 #include "gdm-settings-keys.h"
 #include "gdm-session.h"
@@ -64,7 +64,7 @@ struct GdmXdmcpChooserSlavePrivate
 
         guint              connection_attempts;
 
-        GdmWelcomeSession *chooser;
+        GdmLaunchEnvironment *chooser_environment;
 
         GdmDBusXdmcpChooserSlave *skeleton;
 };
@@ -77,38 +77,38 @@ G_DEFINE_TYPE (GdmXdmcpChooserSlave, gdm_xdmcp_chooser_slave, GDM_TYPE_SLAVE)
 
 
 static void
-on_chooser_session_opened (GdmWelcomeSession    *chooser,
+on_chooser_session_opened (GdmLaunchEnvironment    *chooser,
                            GdmXdmcpChooserSlave *slave)
 {
         char       *session_id;
 
         g_debug ("GdmSimpleSlave: Chooser session opened");
-        session_id = gdm_welcome_session_get_session_id (GDM_WELCOME_SESSION (chooser));
+        session_id = gdm_launch_environment_get_session_id (GDM_LAUNCH_ENVIRONMENT (chooser));
 
         g_object_set (GDM_SLAVE (slave), "session-id", session_id, NULL);
         g_free (session_id);
 }
 
 static void
-on_chooser_session_start (GdmWelcomeSession    *chooser,
+on_chooser_session_start (GdmLaunchEnvironment    *chooser,
                           GdmXdmcpChooserSlave *slave)
 {
         g_debug ("GdmXdmcpChooserSlave: Chooser started");
 }
 
 static void
-on_chooser_session_stop (GdmWelcomeSession    *chooser,
+on_chooser_session_stop (GdmLaunchEnvironment    *chooser,
                          GdmXdmcpChooserSlave *slave)
 {
         g_debug ("GdmXdmcpChooserSlave: Chooser stopped");
         gdm_slave_stopped (GDM_SLAVE (slave));
 
-        g_object_unref (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser);
-        GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser = NULL;
+        g_object_unref (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser_environment);
+        GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser_environment = NULL;
 }
 
 static void
-on_chooser_session_exited (GdmWelcomeSession    *chooser,
+on_chooser_session_exited (GdmLaunchEnvironment    *chooser,
                            int                   code,
                            GdmXdmcpChooserSlave *slave)
 {
@@ -120,7 +120,7 @@ on_chooser_session_exited (GdmWelcomeSession    *chooser,
 }
 
 static void
-on_chooser_session_died (GdmWelcomeSession    *chooser,
+on_chooser_session_died (GdmLaunchEnvironment    *chooser,
                          int                   signal,
                          GdmXdmcpChooserSlave *slave)
 {
@@ -169,12 +169,12 @@ setup_server (GdmXdmcpChooserSlave *slave)
         gdm_slave_set_busy_cursor (GDM_SLAVE (slave));
 }
 
-static GdmWelcomeSession *
+static GdmLaunchEnvironment *
 create_chooser_session (const char *display_name,
                         const char *display_device,
                         const char *display_hostname)
 {
-        return g_object_new (GDM_TYPE_WELCOME_SESSION,
+        return g_object_new (GDM_TYPE_LAUNCH_ENVIRONMENT,
                              "command", LIBEXECDIR "/gdm-simple-chooser",
                              "verification-mode", GDM_SESSION_VERIFICATION_MODE_CHOOSER,
                              "x11-display-name", display_name,
@@ -226,36 +226,36 @@ run_chooser (GdmXdmcpChooserSlave *slave)
         gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/Init", GDM_USERNAME);
 
         g_debug ("GdmXdmcpChooserSlave: Creating chooser on %s %s %s", display_name, display_device, display_hostname);
-        slave->priv->chooser = create_chooser_session (display_name,
+        slave->priv->chooser_environment = create_chooser_session (display_name,
                                                        display_device,
                                                        display_hostname);
-        g_signal_connect (slave->priv->chooser,
+        g_signal_connect (slave->priv->chooser_environment,
                           "opened",
                           G_CALLBACK (on_chooser_session_opened),
                           slave);
-        g_signal_connect (slave->priv->chooser,
+        g_signal_connect (slave->priv->chooser_environment,
                           "started",
                           G_CALLBACK (on_chooser_session_start),
                           slave);
-        g_signal_connect (slave->priv->chooser,
+        g_signal_connect (slave->priv->chooser_environment,
                           "stopped",
                           G_CALLBACK (on_chooser_session_stop),
                           slave);
-        g_signal_connect (slave->priv->chooser,
+        g_signal_connect (slave->priv->chooser_environment,
                           "exited",
                           G_CALLBACK (on_chooser_session_exited),
                           slave);
-        g_signal_connect (slave->priv->chooser,
+        g_signal_connect (slave->priv->chooser_environment,
                           "died",
                           G_CALLBACK (on_chooser_session_died),
                           slave);
-        g_object_set (slave->priv->chooser,
+        g_object_set (slave->priv->chooser_environment,
                       "x11-authority-file", auth_file,
                       NULL);
 
-        gdm_welcome_session_start (GDM_WELCOME_SESSION (slave->priv->chooser));
+        gdm_launch_environment_start (GDM_LAUNCH_ENVIRONMENT (slave->priv->chooser_environment));
 
-        session = gdm_welcome_session_get_session (GDM_WELCOME_SESSION (slave->priv->chooser));
+        session = gdm_launch_environment_get_session (GDM_LAUNCH_ENVIRONMENT (slave->priv->chooser_environment));
 
         g_signal_connect (session,
                           "hostname-selected",
@@ -340,8 +340,8 @@ gdm_xdmcp_chooser_slave_stop (GdmSlave *slave)
 
         GDM_SLAVE_CLASS (gdm_xdmcp_chooser_slave_parent_class)->stop (slave);
 
-        if (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser != NULL) {
-                gdm_welcome_session_stop (GDM_WELCOME_SESSION (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser));
+        if (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser_environment != NULL) {
+                gdm_launch_environment_stop (GDM_LAUNCH_ENVIRONMENT (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser_environment));
         }
 
         return TRUE;
@@ -357,7 +357,7 @@ gdm_xdmcp_chooser_slave_open_session (GdmSlave  *slave,
         GdmXdmcpChooserSlave *self = GDM_XDMCP_CHOOSER_SLAVE (slave);
         GdmSession           *session;
 
-        session = gdm_welcome_session_get_session (GDM_WELCOME_SESSION (self->priv->chooser));
+        session = gdm_launch_environment_get_session (GDM_LAUNCH_ENVIRONMENT (self->priv->chooser_environment));
 
         if (gdm_session_client_is_connected (session)) {
                 g_set_error (error,
diff --git a/data/Makefile.am b/data/Makefile.am
index e3f8642..ffbc768 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -91,7 +91,7 @@ session_DATA = gdm-fallback.session gdm-shell.session
 
 pam_redhat_files = pam-redhat/gdm.pam		\
 	pam-redhat/gdm-autologin.pam		\
-	pam-redhat/gdm-welcome.pam		\
+	pam-redhat/gdm-launch-environment.pam	\
 	pam-redhat/gdm-fingerprint.pam		\
 	pam-redhat/gdm-smartcard.pam		\
 	pam-redhat/gdm-password.pam		\
@@ -100,7 +100,7 @@ EXTRA_DIST += $(pam_redhat_files)
 
 pam_openembedded_files = pam-openembedded/gdm.pam	\
 	pam-openembedded/gdm-autologin.pam		\
-	pam-openembedded/gdm-welcome.pam		\
+	pam-openembedded/gdm-launch-environment.pam	\
 	$(NULL)
 EXTRA_DIST += $(pam_openembedded_files)
 
diff --git a/data/pam-openembedded/gdm-welcome.pam b/data/pam-openembedded/gdm-launch-environment.pam
similarity index 100%
rename from data/pam-openembedded/gdm-welcome.pam
rename to data/pam-openembedded/gdm-launch-environment.pam
diff --git a/data/pam-redhat/gdm-welcome.pam b/data/pam-redhat/gdm-launch-environment.pam
similarity index 100%
rename from data/pam-redhat/gdm-welcome.pam
rename to data/pam-redhat/gdm-launch-environment.pam



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