summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--daemon/gdm-wayland-session.c22
-rw-r--r--daemon/gdm-x-session.c28
2 files changed, 39 insertions, 11 deletions
diff --git a/daemon/gdm-wayland-session.c b/daemon/gdm-wayland-session.c
index 79922664..650e180f 100644
--- a/daemon/gdm-wayland-session.c
+++ b/daemon/gdm-wayland-session.c
@@ -283,11 +283,22 @@ spawn_session (State *state,
gboolean is_running = FALSE;
int ret;
char **argv = NULL;
- static const char *session_variables[] = { "DISPLAY",
- "XAUTHORITY",
+ static const char *session_variables[] = { "DESKTOP_SESSION",
+ "DISPLAY",
+ "GDMSESSION",
+ "GDM_LANG",
+ "GNOME_SHELL_SESSION_MODE",
+ "LANG",
"WAYLAND_DISPLAY",
"WAYLAND_SOCKET",
- "GNOME_SHELL_SESSION_MODE",
+ "WINDOWPATH",
+ "XAUTHORITY",
+ "XDG_CURRENT_DESKTOP",
+ "XDG_SEAT",
+ "XDG_SESSION_ID",
+ "XDG_SESSION_CLASS",
+ "XDG_SESSION_DESKTOP",
+ "XDG_VTNR",
NULL };
g_debug ("Running wayland session");
@@ -326,8 +337,11 @@ spawn_session (State *state,
/* Don't allow session specific environment variables from earlier sessions to
* leak through */
for (i = 0; session_variables[i] != NULL; i++) {
- if (g_getenv (session_variables[i]) == NULL) {
+ const char *value = g_getenv (session_variables[i]);
+ if (value == NULL) {
g_subprocess_launcher_unsetenv (launcher, session_variables[i]);
+ } else {
+ g_subprocess_launcher_setenv (launcher, session_variables[i], value, TRUE);
}
}
}
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c
index 9714da3e..8ca396fa 100644
--- a/daemon/gdm-x-session.c
+++ b/daemon/gdm-x-session.c
@@ -608,12 +608,23 @@ spawn_session (State *state,
GError *error = NULL;
gboolean is_running = FALSE;
const char *vt;
- static const char *session_variables[] = { "DISPLAY",
- "XAUTHORITY",
- "WAYLAND_DISPLAY",
- "WAYLAND_SOCKET",
- "GNOME_SHELL_SESSION_MODE",
- NULL };
+ static const char *session_variables[] = { "DESKTOP_SESSION",
+ "DISPLAY",
+ "GDMSESSION",
+ "GDM_LANG",
+ "GNOME_SHELL_SESSION_MODE",
+ "LANG",
+ "WAYLAND_DISPLAY",
+ "WAYLAND_SOCKET",
+ "WINDOWPATH",
+ "XAUTHORITY",
+ "XDG_CURRENT_DESKTOP",
+ "XDG_SEAT",
+ "XDG_SESSION_ID",
+ "XDG_SESSION_CLASS",
+ "XDG_SESSION_DESKTOP",
+ "XDG_VTNR",
+ NULL };
g_debug ("Running X session");
@@ -641,8 +652,11 @@ spawn_session (State *state,
/* Don't allow session specific environment variables from earlier sessions to
* leak through */
for (i = 0; session_variables[i] != NULL; i++) {
- if (g_getenv (session_variables[i]) == NULL) {
+ const char *value = g_getenv (session_variables[i]);
+ if (value == NULL) {
g_subprocess_launcher_unsetenv (launcher, session_variables[i]);
+ } else {
+ g_subprocess_launcher_setenv (launcher, session_variables[i], value, TRUE);
}
}
}