From f629710cbe3455bf785fb1addca313bb47171cde Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Tue, 29 Nov 2016 16:40:34 +1300 Subject: Load greeters from XDG_DATA_DIRS instead of compile time value --- data/lightdm.conf | 2 +- src/Makefile.am | 3 +-- src/lightdm.c | 19 ++++++++++++++++++- 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 ()); -- cgit v1.2.1