Set XDG_SESSION_TYPE earlier

Need pam_systemd module to see proper XDG_SESSION_TYPE setting.
This commit is contained in:
loserMcloser 2020-02-01 16:23:12 -07:00 committed by Jeremy Sylvestre
parent a36f70ecb2
commit 899def9943
1 changed files with 15 additions and 9 deletions

View File

@ -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) switch (display_server)
{ {
case DS_WAYLAND: 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( void add_utmp_entry(
struct utmp *entry, struct utmp *entry,
char *username, char *username,
@ -505,10 +508,13 @@ void auth(
return; return;
} }
env_xdg_session(desktop->display_server[desktop->cur]);
ok = pam_do(pam_open_session, handle, 0, buf); ok = pam_do(pam_open_session, handle, 0, buf);
if (ok != PAM_SUCCESS) if (ok != PAM_SUCCESS)
{ {
setenv("XDG_SESSION_TYPE", "tty", 0);
return; return;
} }
@ -601,7 +607,7 @@ void auth(
} }
// add xdg variables // add xdg variables
env_xdg(tty_id, desktop->display_server[desktop->cur]); env_xdg(tty_id);
// execute // execute
int ok = chdir(pwd->pw_dir); int ok = chdir(pwd->pw_dir);