[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