summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am1
-rw-r--r--src/greeter.c11
-rw-r--r--src/lightdm.c10
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);