summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libgdm/gdm-sessions.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c
index 4a5434ed..ee981350 100644
--- a/libgdm/gdm-sessions.c
+++ b/libgdm/gdm-sessions.c
@@ -157,6 +157,9 @@ collect_sessions_from_directory (const char *dirname)
GDir *dir;
const char *filename;
+ gboolean is_x11 = g_getenv ("WAYLAND_DISPLAY") == NULL &&
+ g_getenv ("RUNNING_UNDER_GDM") != NULL;
+
/* FIXME: add file monitor to directory */
dir = g_dir_open (dirname, 0, NULL);
@@ -171,6 +174,21 @@ collect_sessions_from_directory (const char *dirname)
if (! g_str_has_suffix (filename, ".desktop")) {
continue;
}
+
+ if (is_x11 && g_str_has_suffix (filename, "-xorg.desktop")) {
+ char *base_name = g_strndup (filename, strlen (filename) - strlen ("-xorg.desktop"));
+ char *fallback_name = g_strconcat (base_name, ".desktop", NULL);
+ g_free (base_name);
+ char *fallback_path = g_build_filename (dirname, fallback_name, NULL);
+ g_free (fallback_name);
+ if (g_file_test (fallback_path, G_FILE_TEST_EXISTS)) {
+ g_free (fallback_path);
+ g_debug ("Running under X11, ignoring %s", filename);
+ continue;
+ }
+ g_free (fallback_path);
+ }
+
id = g_strndup (filename, strlen (filename) - strlen (".desktop"));
full_path = g_build_filename (dirname, filename, NULL);