summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2016-11-29 16:40:34 +1300
committerRobert Ancell <robert.ancell@canonical.com>2016-11-29 16:40:34 +1300
commitf629710cbe3455bf785fb1addca313bb47171cde (patch)
tree1e5b5dcb39c8ec1a89d4157a6a11d938c7b285c5
parentbadeec2022be718a1c37ec0da223c9d74f44cb66 (diff)
downloadlightdm-git-f629710cbe3455bf785fb1addca313bb47171cde.tar.gz
Load greeters from XDG_DATA_DIRS instead of compile time value
-rw-r--r--data/lightdm.conf2
-rw-r--r--src/Makefile.am3
-rw-r--r--src/lightdm.c19
3 files changed, 20 insertions, 4 deletions
diff --git a/data/lightdm.conf b/data/lightdm.conf
index 72d1f0bb..ce990a0b 100644
--- a/data/lightdm.conf
+++ b/data/lightdm.conf
@@ -31,7 +31,7 @@
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
-#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters
+#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
#backup-logs=true
#
diff --git a/src/Makefile.am b/src/Makefile.am
index 4d59d515..edee5bf8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -88,8 +88,7 @@ lightdm_CFLAGS = \
-DCACHE_DIR=\"$(localstatedir)/cache/lightdm\" \
-DSESSIONS_DIR=\"$(pkgdatadir)/sessions:$(datadir)/xsessions:$(datadir)/wayland-sessions\" \
-DWAYLAND_SESSIONS_DIR=\"$(datadir)/wayland-sessions\" \
- -DREMOTE_SESSIONS_DIR=\"$(pkgdatadir)/remote-sessions\" \
- -DGREETERS_DIR=\"$(pkgdatadir)/greeters:$(datadir)/xgreeters\"
+ -DREMOTE_SESSIONS_DIR=\"$(pkgdatadir)/remote-sessions\"
lightdm_LDADD = \
$(LIGHTDM_LIBS) \
diff --git a/src/lightdm.c b/src/lightdm.c
index fd62314c..b6355777 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -1460,7 +1460,24 @@ main (int argc, char **argv)
if (!config_has_key (config_get_instance (), "LightDM", "remote-sessions-directory"))
config_set_string (config_get_instance (), "LightDM", "remote-sessions-directory", REMOTE_SESSIONS_DIR);
if (!config_has_key (config_get_instance (), "LightDM", "greeters-directory"))
- config_set_string (config_get_instance (), "LightDM", "greeters-directory", GREETERS_DIR);
+ {
+ GPtrArray *dirs;
+ const gchar * const *data_dirs;
+ gchar *value;
+ int i;
+
+ dirs = g_ptr_array_new_with_free_func (g_free);
+ data_dirs = g_get_system_data_dirs ();
+ for (i = 0; data_dirs[i]; i++)
+ g_ptr_array_add (dirs, g_build_filename (data_dirs[i], "lightdm/greeters", NULL));
+ for (i = 0; data_dirs[i]; i++)
+ g_ptr_array_add (dirs, g_build_filename (data_dirs[i], "xgreeters", NULL));
+ g_ptr_array_add (dirs, NULL);
+ value = g_strjoinv (":", (gchar **) dirs->pdata);
+ config_set_string (config_get_instance (), "LightDM", "greeters-directory", value);
+ g_free (value);
+ g_ptr_array_unref (dirs);
+ }
if (!config_has_key (config_get_instance (), "XDMCPServer", "hostname"))
config_set_string (config_get_instance (), "XDMCPServer", "hostname", g_get_host_name ());