=== modified file 'liblightdm-gobject/greeter.c'
--- liblightdm-gobject/greeter.c	2013-01-31 20:56:09 +0000
+++ liblightdm-gobject/greeter.c	2013-03-29 14:15:58 +0000
@@ -567,6 +567,21 @@
 }
 
 /**
+ * lightdm_greeter_get_config_path
+ * @greeter: A #LightDMGreeter
+ *
+ * Get the config path to LightDM.
+ *
+ * Return value: The path to the current LightDM configuration file.
+ **/
+const gchar *
+lightdm_greeter_get_config_path (LightDMGreeter *greeter)
+{
+    g_return_val_if_fail (LIGHTDM_IS_GREETER (greeter), NULL);
+    return lightdm_greeter_get_hint (greeter, "config-path");
+}
+
+/**
  * lightdm_greeter_get_hide_users_hint:
  * @greeter: A #LightDMGreeter
  *

=== modified file 'liblightdm-gobject/lightdm/greeter.h'
--- liblightdm-gobject/lightdm/greeter.h	2013-01-31 20:56:09 +0000
+++ liblightdm-gobject/lightdm/greeter.h	2013-03-29 11:56:11 +0000
@@ -93,6 +93,8 @@
 
 const gchar *lightdm_greeter_get_autologin_user_hint (LightDMGreeter *greeter);
 
+const gchar *lightdm_greeter_get_config_path (LightDMGreeter *greeter);
+
 gboolean lightdm_greeter_get_autologin_guest_hint (LightDMGreeter *greeter);
 
 gint lightdm_greeter_get_autologin_timeout_hint (LightDMGreeter *greeter);

=== modified file 'liblightdm-gobject/lightdm/session.h'
--- liblightdm-gobject/lightdm/session.h	2013-01-31 20:56:09 +0000
+++ liblightdm-gobject/lightdm/session.h	2013-03-29 11:59:16 +0000
@@ -12,6 +12,7 @@
 #define _LIGHTDM_SESSION_H_
 
 #include <glib-object.h>
+#include "greeter.h"
 
 G_BEGIN_DECLS
 
@@ -42,9 +43,9 @@
 
 GType lightdm_session_get_type (void);
 
-GList *lightdm_get_sessions (void);
+GList *lightdm_get_sessions (LightDMGreeter *greeter);
 
-GList *lightdm_get_remote_sessions (void);
+GList *lightdm_get_remote_sessions (LightDMGreeter *greeter);
 
 const gchar *lightdm_session_get_key (LightDMSession *session);
 

=== modified file 'liblightdm-gobject/session.c'
--- liblightdm-gobject/session.c	2013-01-31 20:56:09 +0000
+++ liblightdm-gobject/session.c	2013-03-29 14:16:48 +0000
@@ -11,6 +11,7 @@
 #include <string.h>
 #include <gio/gdesktopappinfo.h>
 
+#include "lightdm/greeter.h"
 #include "lightdm/session.h"
 
 enum {
@@ -167,7 +168,7 @@
 }
 
 static void
-update_sessions (void)
+update_sessions (LightDMGreeter *greeter)
 {
     GKeyFile *config_key_file = NULL;
     gchar *config_path = NULL;
@@ -183,8 +184,8 @@
     remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
 
     /* Use session directory from configuration */
-    /* FIXME: This should be sent in the greeter connection */
-    config_path = g_build_filename (CONFIG_DIR, "lightdm.conf", NULL);
+    config_path = g_strdup (lightdm_greeter_get_config_path (greeter));
+
     config_key_file = g_key_file_new ();
     result = g_key_file_load_from_file (config_key_file, config_path, G_KEY_FILE_NONE, &error);
     if (error)
@@ -228,9 +229,9 @@
  * Return value: (element-type LightDMSession) (transfer none): A list of #LightDMSession
  **/
 GList *
-lightdm_get_sessions (void)
+lightdm_get_sessions (LightDMGreeter *greeter)
 {
-    update_sessions ();
+    update_sessions (greeter);
     return local_sessions;
 }
 
@@ -242,9 +243,9 @@
  * Return value: (element-type LightDMSession) (transfer none): A list of #LightDMSession
  **/
 GList *
-lightdm_get_remote_sessions (void)
+lightdm_get_remote_sessions (LightDMGreeter *greeter)
 {
-    update_sessions ();
+    update_sessions (greeter);
     return remote_sessions;
 }
 

=== modified file 'src/display.c'
--- src/display.c	2013-03-26 22:22:49 +0000
+++ src/display.c	2013-03-29 12:12:43 +0000
@@ -62,6 +62,9 @@
     /* Program to run sessions through */
     gchar *session_wrapper;
 
+    /* Path to the configuration file that lightdm is running under */
+    gchar *config_path;
+
     /* TRUE if in a user session */
     gboolean in_user_session;
 
@@ -213,6 +216,14 @@
 }
 
 void
+display_set_config_path (Display *display, const gchar *config_path)
+{
+    g_return_if_fail (display != NULL);
+    g_free (display->priv->config_path);
+    display->priv->config_path = g_strdup (config_path);
+}
+
+void
 display_set_show_remote_login_hint (Display *display, gboolean show_remote_login)
 {
     g_return_if_fail (display != NULL);
@@ -436,6 +447,7 @@
     greeter_set_hint (display->priv->greeter, "show-remote-login", display->priv->greeter_show_remote_login ? "true" : "false");
     if (display->priv->greeter_is_lock)
         greeter_set_hint (display->priv->greeter, "lock-screen", "true");
+    greeter_set_hint (display->priv->greeter, "config-path", display->priv->config_path);
 
     /* Run greeter as unprivileged user */
     if (getuid () != 0)

=== modified file 'src/display.h'
--- src/display.h	2013-03-26 22:22:49 +0000
+++ src/display.h	2013-03-29 12:12:37 +0000
@@ -80,6 +80,8 @@
 
 void display_set_user_session (Display *display, SessionType type, const gchar *session_name);
 
+void display_set_config_path (Display *display, const gchar *config_path);
+
 gboolean display_start (Display *display);
 
 gboolean display_get_is_ready (Display *display);

=== modified file 'src/lightdm.c'
--- src/lightdm.c	2013-03-07 21:40:31 +0000
+++ src/lightdm.c	2013-03-29 11:48:45 +0000
@@ -1050,6 +1050,7 @@
     g_debug ("Starting Light Display Manager %s, UID=%i PID=%i", VERSION, getuid (), getpid ());
 
     g_debug ("Loaded configuration from %s", config_path);
+    config_set_string (config_get_instance (), "LightDM", "config-path", config_path);
     g_free (config_path);
 
     g_debug ("Using D-Bus name %s", LIGHTDM_BUS_NAME);

=== modified file 'src/seat.c'
--- src/seat.c	2013-03-26 22:22:49 +0000
+++ src/seat.c	2013-03-29 12:13:00 +0000
@@ -536,6 +536,7 @@
     if (!session_name)
         session_name = seat_get_string_property (seat, "user-session");
     display_set_user_session (display, SESSION_TYPE_LOCAL, session_name);
+    display_set_config_path (display, config_get_string (config_get_instance (), "LightDM", "config-path"));
 
     seat->priv->displays = g_list_append (seat->priv->displays, display);
     g_signal_emit (seat, signals[DISPLAY_ADDED], 0, display);

