From 899def99433eae4aa391da5e3d4603d1c38ffdae Mon Sep 17 00:00:00 2001 From: loserMcloser Date: Sat, 1 Feb 2020 16:23:12 -0700 Subject: [PATCH] Set XDG_SESSION_TYPE earlier Need pam_systemd module to see proper XDG_SESSION_TYPE setting. --- src/login.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/login.c b/src/login.c index 33ab66a..f7728d9 100644 --- a/src/login.c +++ b/src/login.c @@ -241,15 +241,8 @@ void env_init(struct passwd* pwd) } } -void env_xdg(const char* tty_id, const enum display_server display_server) +void env_xdg_session(const enum display_server display_server) { - char user[15]; - snprintf(user, 15, "/run/user/%d", getuid()); - setenv("XDG_RUNTIME_DIR", user, 0); - setenv("XDG_SESSION_CLASS", "user", 0); - setenv("XDG_SEAT", "seat0", 0); - setenv("XDG_VTNR", tty_id, 0); - switch (display_server) { case DS_WAYLAND: @@ -271,6 +264,16 @@ void env_xdg(const char* tty_id, const enum display_server display_server) } } +void env_xdg(const char* tty_id) +{ + char user[15]; + snprintf(user, 15, "/run/user/%d", getuid()); + setenv("XDG_RUNTIME_DIR", user, 0); + setenv("XDG_SESSION_CLASS", "user", 0); + setenv("XDG_SEAT", "seat0", 0); + setenv("XDG_VTNR", tty_id, 0); +} + void add_utmp_entry( struct utmp *entry, char *username, @@ -505,10 +508,13 @@ void auth( return; } + env_xdg_session(desktop->display_server[desktop->cur]); + ok = pam_do(pam_open_session, handle, 0, buf); if (ok != PAM_SUCCESS) { + setenv("XDG_SESSION_TYPE", "tty", 0); return; } @@ -601,7 +607,7 @@ void auth( } // add xdg variables - env_xdg(tty_id, desktop->display_server[desktop->cur]); + env_xdg(tty_id); // execute int ok = chdir(pwd->pw_dir);