[Pkg-xfce-devel] Bug#656863: liblightdm: lightdm.conf's xsessions-directory is ignored

Manuel Sabban manuel.sabban at telecom-paristech.fr
Tue Sep 4 10:31:55 UTC 2012


Hi,

You will find below a workaround to this bug. I do not know if it can be allowed in debian, because it makes liblightdm-gobject dependant to /etc/lightdm/lightdm.conf. This may not be a wanted dependency, but from my point of view, liblightdm-gobject-1-0 is quite mandatory as llightdm-gtk-greeter needs it and lightdm needs a greeter. Obviously, another configuration file can be used.

Thanks.


--- lightdm-1.2.2.orig/liblightdm-gobject/Makefile.in
+++ lightdm-1.2.2/liblightdm-gobject/Makefile.in
@@ -317,7 +317,8 @@ liblightdm_gobject_1_la_LDFLAGS = -expor
 liblightdm_gobject_1_la_LIBADD = $(LIBLIGHTDM_GOBJECT_LIBS)
 liblightdm_gobject_1_la_CFLAGS = $(LIBLIGHTDM_GOBJECT_CFLAGS) \
        $(WARN_CFLAGS) \
-       -DXSESSIONS_DIR=\"$(datadir)/xsessions\"
+       -DXSESSIONS_DIR=\"$(datadir)/xsessions\" \
+       -DCONFIG_DIR=\"$(sysconfdir)/lightdm\"
 
 mainheader_HEADERS = lightdm.h
 mainheaderdir = $(includedir)/lightdm-gobject-1
--- lightdm-1.2.2.orig/liblightdm-gobject/session.c
+++ lightdm-1.2.2/liblightdm-gobject/session.c
@@ -109,12 +109,22 @@ static void
 update_sessions (void)
 {
     GDir *directory;
+    gchar *xsessions_dir=NULL;
     GError *error = NULL;
-
+    GKeyFile *key_lightdm;
+    
     if (have_sessions)
         return;
 
-    directory = g_dir_open (XSESSIONS_DIR, 0, &error);
+    key_lightdm = g_key_file_new ();
+    if  (g_key_file_load_from_file (key_lightdm, g_build_filename (CONFIG_DIR, "lightdm.conf", NULL), 
+                                    G_KEY_FILE_NONE, &error) )
+      { 
+       xsessions_dir=g_key_file_get_string (key_lightdm,"LightDM","xsessions-directory",&error);
+      }
+    g_key_file_free(key_lightdm);
+    g_clear_error (&error);
+    directory = g_dir_open (xsessions_dir?xsessions_dir:XSESSIONS_DIR, 0, &error);
     if (error)
         g_warning ("Failed to open sessions directory: %s", error->message);
     g_clear_error (&error);
@@ -135,7 +144,7 @@ update_sessions (void)
         if (!g_str_has_suffix (filename, ".desktop"))
             continue;
 
-        path = g_build_filename (XSESSIONS_DIR, filename, NULL);
+        path = g_build_filename (xsessions_dir?xsessions_dir:XSESSIONS_DIR, filename, NULL);
 
         key_file = g_key_file_new ();
         result = g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &error);
@@ -161,6 +170,7 @@ update_sessions (void)
         g_key_file_free (key_file);
     }
 
+    g_free(xsessions_dir);
     g_dir_close (directory);
 
     have_sessions = TRUE;
--- lightdm-1.2.2.orig/liblightdm-gobject/Makefile.am
+++ lightdm-1.2.2/liblightdm-gobject/Makefile.am
@@ -4,7 +4,9 @@ liblightdm_gobject_1_la_LDFLAGS = -expor
 liblightdm_gobject_1_la_LIBADD = $(LIBLIGHTDM_GOBJECT_LIBS)
 liblightdm_gobject_1_la_CFLAGS = $(LIBLIGHTDM_GOBJECT_CFLAGS) \
        $(WARN_CFLAGS) \
-       -DXSESSIONS_DIR=\"$(datadir)/xsessions\"
+       -DXSESSIONS_DIR=\"$(datadir)/xsessions\" \
+       -DCONFIG_DIR=\"$(sysconfdir)/lightdm\"
+
 
 mainheader_HEADERS = lightdm.h
 mainheaderdir=$(includedir)/lightdm-gobject-1


-- 
Manuel Sabban



More information about the Pkg-xfce-devel mailing list