]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Allow guest-wrapper to be set
authorRobert Ancell <robert.ancell@canonical.com>
Sun, 27 Oct 2013 05:01:22 +0000 (18:01 +1300)
committerRobert Ancell <robert.ancell@canonical.com>
Sun, 27 Oct 2013 05:01:22 +0000 (18:01 +1300)
data/lightdm.conf
debian/50-guest-wrapper.conf
src/seat.c

index 7dce021cc8295e678da90cebd4a579ce94ba197a..693f551ed55a908463f3ca5eb9d87468f3348264 100644 (file)
@@ -57,6 +57,7 @@
 # guest-session = Session to load for guests (overrides user-session)
 # session-wrapper = Wrapper script to run session with
 # greeter-wrapper = Wrapper script to run greeter with
+# guest-wrapper = Wrapper script to run guest sessions with
 # display-setup-script = Script to run when starting a greeter session (runs as root)
 # greeter-setup-script = Script to run when starting a greeter (runs as root)
 # session-setup-script = Script to run when starting a user session (runs as root)
@@ -93,6 +94,7 @@
 #guest-session=UNIMPLEMENTED
 #session-wrapper=lightdm-session
 #greeter-wrapper=
+#guest-wrapper=
 #display-setup-script=
 #greeter-setup-script=
 #session-setup-script=
index 090215def24b2ed909b5b4dacb75055a0d17af8e..a566e7d85a926657189af553754dbd088a43c4cf 100644 (file)
@@ -1,2 +1,2 @@
 [SeatDefaults]
-guest-wrapper=/usr/lib/lightdm/lightdm/lightdm-greeter-session
+guest-wrapper=/usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper
index c3c573369c9eae46a116c08ff578a7990e432fa0..ed431b149bf1031d20d0d872a55129b3ce656c30 100644 (file)
@@ -874,10 +874,27 @@ create_user_session (Seat *seat, const gchar *username, gboolean autostart)
     return session;
 }
 
+static void
+prepend_argv (gchar ***argv, const gchar *value)
+{
+    gchar **old_argv, **new_argv;
+    gint i;
+
+    old_argv = *argv;
+    new_argv = g_malloc (sizeof (gchar *) * (g_strv_length (*argv) + 2));
+    new_argv[0] = g_strdup (value);
+    for (i = 0; old_argv[i]; i++)
+        new_argv[i + 1] = old_argv[i];
+    new_argv[i + 1] = NULL;
+
+    g_free (*argv);
+    *argv = new_argv;
+}
+
 static Session *
 create_guest_session (Seat *seat)
 {
-    const gchar *session_name;
+    const gchar *session_name, *guest_wrapper;
     gchar *sessions_dir, **argv;
     SessionConfig *session_config;
     Session *session;
@@ -897,6 +914,17 @@ create_guest_session (Seat *seat)
     session_set_do_authenticate (session, TRUE);
     session_set_is_guest (session, TRUE);
     argv = get_session_argv (seat, session_config, seat_get_string_property (seat, "session-wrapper"));
+
+    argv = get_session_argv (seat, session_config, NULL);
+    guest_wrapper = seat_get_string_property (seat, "guest-wrapper");
+    if (guest_wrapper)
+    {
+        gchar *path;
+        path = g_find_program_in_path (guest_wrapper);
+        prepend_argv (&argv, path ? path : guest_wrapper);
+        g_free (path);
+    }
+
     session_set_argv (session, argv);
     g_strfreev (argv);
     g_object_unref (session_config);
@@ -916,23 +944,6 @@ greeter_create_session_cb (Greeter *greeter, Seat *seat)
     return g_object_ref (session);
 }
 
-static void
-prepend_argv (gchar ***argv, const gchar *value)
-{
-    gchar **old_argv, **new_argv;
-    gint i;
-
-    old_argv = *argv;
-    new_argv = g_malloc (sizeof (gchar *) * (g_strv_length (*argv) + 2));
-    new_argv[0] = g_strdup (value);
-    for (i = 0; old_argv[i]; i++)
-        new_argv[i + 1] = old_argv[i];
-    new_argv[i + 1] = NULL;
-
-    g_free (*argv);
-    *argv = new_argv;
-}
-
 static gboolean
 greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *session_name, Seat *seat)
 {