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)
{
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);