--- lightdm/src/seat.c 2014-09-30 03:33:38 +0000 +++ lightdm/src/seat.c 2014-10-20 14:28:16 +0000 @@ -848,14 +848,19 @@ static void configure_session (Session *session, SessionConfig *config, const gchar *session_name, const gchar *language) { - const gchar *desktop_name; + gchar **desktop_names; session_set_config (session, config); session_set_env (session, "DESKTOP_SESSION", session_name); session_set_env (session, "GDMSESSION", session_name); - desktop_name = session_config_get_desktop_name (config); - if (desktop_name) - session_set_env (session, "XDG_CURRENT_DESKTOP", desktop_name); + desktop_names = session_config_get_desktop_names (config); + if (desktop_names) + { + gchar *value; + value = g_strjoinv (":", desktop_names); + session_set_env (session, "XDG_CURRENT_DESKTOP", value); + g_free (value); + } if (language && language[0] != '\0') { session_set_env (session, "LANG", language); --- lightdm/src/session-config.c 2014-09-12 00:04:28 +0000 +++ lightdm/src/session-config.c 2014-10-20 14:28:16 +0000 @@ -16,8 +16,8 @@ /* Session type */ gchar *session_type; - /* Desktop name */ - gchar *desktop_name; + /* Desktop names */ + gchar **desktop_names; /* Command to run */ gchar *command; @@ -53,7 +53,20 @@ config->priv->session_type = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-Session-Type", NULL); if (!config->priv->session_type) config->priv->session_type = g_strdup ("x"); - config->priv->desktop_name = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-DesktopName", NULL); + + config->priv->desktop_names = g_key_file_get_string_list (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "DesktopNames", NULL, NULL); + if (!config->priv->desktop_names) + { + gchar *name; + + name = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-DesktopName", NULL); + if (name) + { + config->priv->desktop_names = g_malloc (sizeof (gchar *) * 2); + config->priv->desktop_names[0] = name; + config->priv->desktop_names[1] = NULL; + } + } config->priv->compositor_command = g_key_file_get_string (desktop_file, G_KEY_FILE_DESKTOP_GROUP, "X-LightDM-System-Compositor-Command", NULL); g_key_file_free (desktop_file); @@ -75,11 +88,11 @@ return config->priv->session_type; } -const gchar * -session_config_get_desktop_name (SessionConfig *config) +gchar ** +session_config_get_desktop_names (SessionConfig *config) { g_return_val_if_fail (config != NULL, NULL); - return config->priv->desktop_name; + return config->priv->desktop_names; } const gchar * @@ -101,7 +114,7 @@ SessionConfig *self = SESSION_CONFIG (object); g_free (self->priv->session_type); - g_free (self->priv->desktop_name); + g_strfreev (self->priv->desktop_names); g_free (self->priv->command); g_free (self->priv->compositor_command); --- lightdm/src/session-config.h 2014-09-12 00:04:28 +0000 +++ lightdm/src/session-config.h 2014-10-20 14:28:16 +0000 @@ -42,7 +42,7 @@ const gchar *session_config_get_session_type (SessionConfig *config); -const gchar *session_config_get_desktop_name (SessionConfig *config); +gchar **session_config_get_desktop_names (SessionConfig *config); const gchar *session_config_get_compositor_command (SessionConfig *config); --- lightdm/tests/Makefile.am 2014-09-30 03:33:38 +0000 +++ lightdm/tests/Makefile.am 2014-10-20 14:28:16 +0000 @@ -56,6 +56,7 @@ test-login-guest-session-config \ test-group-membership \ test-xdg-current-desktop \ + test-xdg-current-desktop-legacy \ test-xdg-seat \ test-language-env \ test-session-stdout \ @@ -339,6 +340,7 @@ data/sessions/mir.desktop \ data/sessions/mir-container.desktop \ data/sessions/named.desktop \ + data/sessions/named-legacy.desktop \ data/sessions/surfaceflinger.desktop \ scripts/0-additional.conf \ scripts/1-additional.conf \ @@ -543,6 +545,7 @@ scripts/vnc-open-file-descriptors.conf \ scripts/xauthority.conf \ scripts/xdg-current-desktop.conf \ + scripts/xdg-current-desktop-legacy.conf \ scripts/xdg-seat.conf \ scripts/xdmcp-client.conf \ scripts/xdmcp-server-login.conf \ === added file 'tests/data/sessions/named-legacy.desktop' --- lightdm/tests/data/sessions/named-legacy.desktop 1970-01-01 00:00:00 +0000 +++ lightdm/tests/data/sessions/named-legacy.desktop 2014-10-20 14:28:16 +0000 @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Test Session +Comment=LightDM test session +Exec=test-session +X-LightDM-DesktopName=TestDesktop === modified file 'tests/data/sessions/named.desktop' --- lightdm/tests/data/sessions/named.desktop 2013-08-19 00:21:19 +0000 +++ lightdm/tests/data/sessions/named.desktop 2014-10-20 14:28:16 +0000 @@ -2,4 +2,4 @@ Name=Test Session Comment=LightDM test session Exec=test-session -X-LightDM-DesktopName=TestDesktop +DesktopNames=TestDesktop1;TestDesktop2; === added file 'tests/scripts/xdg-current-desktop-legacy.conf' --- lightdm/tests/scripts/xdg-current-desktop-legacy.conf 1970-01-01 00:00:00 +0000 +++ lightdm/tests/scripts/xdg-current-desktop-legacy.conf 2014-10-20 14:28:16 +0000 @@ -0,0 +1,30 @@ +# +# Check XDG_CURRENT_DESKTOP is set for sessions that support it using the legacy key name +# + +[SeatDefaults] +autologin-user=have-password1 +user-session=named-legacy + +#?*START-DAEMON +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER-0 START VT=7 SEAT=seat0 + +# Daemon connects when X server is ready +#?*XSERVER-0 INDICATE-READY +#?XSERVER-0 INDICATE-READY +#?XSERVER-0 ACCEPT-CONNECT + +# Session starts +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_CURRENT_DESKTOP=TestDesktop XDG_GREETER_DATA_DIR=.*/have-password1 DESKTOP_SESSION=named-legacy USER=have-password1 +#?LOGIN1 ACTIVATE-SESSION SESSION=c0 +#?XSERVER-0 ACCEPT-CONNECT +#?SESSION-X-0 CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +#?SESSION-X-0 TERMINATE SIGNAL=15 +#?XSERVER-0 TERMINATE SIGNAL=15 +#?RUNNER DAEMON-EXIT STATUS=0 === modified file 'tests/scripts/xdg-current-desktop.conf' --- lightdm/tests/scripts/xdg-current-desktop.conf 2014-03-17 18:33:02 +0000 +++ lightdm/tests/scripts/xdg-current-desktop.conf 2014-10-20 14:28:16 +0000 @@ -18,7 +18,7 @@ #?XSERVER-0 ACCEPT-CONNECT # Session starts -#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_CURRENT_DESKTOP=TestDesktop XDG_GREETER_DATA_DIR=.*/have-password1 DESKTOP_SESSION=named USER=have-password1 +#?SESSION-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_CURRENT_DESKTOP=TestDesktop1:TestDesktop2 XDG_GREETER_DATA_DIR=.*/have-password1 DESKTOP_SESSION=named USER=have-password1 #?LOGIN1 ACTIVATE-SESSION SESSION=c0 #?XSERVER-0 ACCEPT-CONNECT #?SESSION-X-0 CONNECT-XSERVER === added file 'tests/test-xdg-current-desktop-legacy' --- lightdm/tests/test-xdg-current-desktop-legacy 1970-01-01 00:00:00 +0000 +++ lightdm/tests/test-xdg-current-desktop-legacy 2014-10-20 14:28:16 +0000 @@ -0,0 +1,2 @@ +#!/bin/sh +./src/dbus-env ./src/test-runner xdg-current-desktop-legacy test-gobject-greeter