diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/greeter.c | 11 | ||||
-rw-r--r-- | src/lightdm.c | 10 |
3 files changed, 18 insertions, 4 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 4cf2863a..d34c8269 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -86,6 +86,7 @@ lightdm_CFLAGS = \ -DRUN_DIR=\"$(localstatedir)/run/lightdm\" \ -DCACHE_DIR=\"$(localstatedir)/cache/lightdm\" \ -DXSESSIONS_DIR=\"$(datadir)/xsessions\" \ + -DREMOTE_SESSIONS_DIR=\"$(datadir)/remote-sessions\" \ -DXGREETERS_DIR=\"$(datadir)/xgreeters\" lightdm_LDADD = \ diff --git a/src/greeter.c b/src/greeter.c index ad0cf557..00303ac0 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -18,6 +18,7 @@ #include "greeter.h" #include "ldm-marshal.h" +#include "configuration.h" enum { CONNECTED, @@ -357,7 +358,7 @@ get_remote_session_service (const gchar *session_name) GKeyFile *session_desktop_file; gboolean result; const gchar *c; - gchar *filename, *path, *service = NULL; + gchar *remote_sessions_dir, *filename, *path, *service = NULL; GError *error = NULL; /* Validate session name doesn't contain directory separators */ @@ -370,12 +371,14 @@ get_remote_session_service (const gchar *session_name) /* Load the session file */ session_desktop_file = g_key_file_new (); filename = g_strdup_printf ("%s.desktop", session_name); - path = g_build_filename (REMOTE_SESSION_DIR, filename); + remote_sessions_dir = config_get_string (config_get_instance (), "LightDM", "remote-sessions-directory"); + path = g_build_filename (remote_sessions_dir, filename, NULL); + g_free (remote_sessions_dir); g_free (filename); result = g_key_file_load_from_file (session_desktop_file, path, G_KEY_FILE_NONE, &error); - g_free (path); if (error) - g_debug ("Failed to load session file %s: %s", filename, error->message); + g_debug ("Failed to load session file %s: %s", path, error->message); + g_free (path); g_clear_error (&error); if (result) service = g_key_file_get_string (session_desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-PAM-Service", NULL); diff --git a/src/lightdm.c b/src/lightdm.c index dce89f54..04fb59ef 100644 --- a/src/lightdm.c +++ b/src/lightdm.c @@ -817,6 +817,7 @@ main (int argc, char **argv) gboolean test_mode = FALSE; gchar *pid_path = "/var/run/lightdm.pid"; gchar *xsessions_dir = NULL; + gchar *remote_sessions_dir = NULL; gchar *xgreeters_dir = NULL; gchar *config_dir; gchar *log_dir = NULL; @@ -843,6 +844,9 @@ main (int argc, char **argv) { "xsessions-dir", 0, 0, G_OPTION_ARG_STRING, &xsessions_dir, /* Help string for command line --xsessions-dir flag */ N_("Directory to load X sessions from"), "DIRECTORY" }, + { "remote-sessions-dir", 0, 0, G_OPTION_ARG_STRING, &remote_sessions_dir, + /* Help string for command line --remote-sessions-dir flag */ + N_("Directory to load remote sessions from"), "DIRECTORY" }, { "xgreeters-dir", 0, 0, G_OPTION_ARG_STRING, &xgreeters_dir, /* Help string for command line --xgreeters-dir flag */ N_("Directory to load X greeters from"), "DIRECTORY" }, @@ -952,6 +956,7 @@ main (int argc, char **argv) /* Always use absolute directories as child processes may run from different locations */ xsessions_dir = path_make_absolute (xsessions_dir); + remote_sessions_dir = path_make_absolute (remote_sessions_dir); xgreeters_dir = path_make_absolute (xgreeters_dir); /* If not running as root write output to directories we control */ @@ -1019,6 +1024,8 @@ main (int argc, char **argv) g_free (default_cache_dir); if (!config_has_key (config_get_instance (), "LightDM", "xsessions-directory")) config_set_string (config_get_instance (), "LightDM", "xsessions-directory", XSESSIONS_DIR); + 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", "xgreeters-directory")) config_set_string (config_get_instance (), "LightDM", "xgreeters-directory", XGREETERS_DIR); @@ -1035,6 +1042,9 @@ main (int argc, char **argv) if (xsessions_dir) config_set_string (config_get_instance (), "LightDM", "xsessions-directory", xsessions_dir); g_free (xsessions_dir); + if (remote_sessions_dir) + config_set_string (config_get_instance (), "LightDM", "remote-sessions-directory", remote_sessions_dir); + g_free (remote_sessions_dir); if (xgreeters_dir) config_set_string (config_get_instance (), "LightDM", "xgreeters-directory", xgreeters_dir); g_free (xgreeters_dir); |