Set XDG_SESSION_TYPE earlier to fix some bugs

pull/394/head
AnErrupTion 2 years ago
parent 609b3f9ddc
commit 27c5673116

@ -242,15 +242,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:
@ -272,6 +265,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,
@ -478,6 +481,9 @@ void auth(
ok = pam_start(config.service_name, NULL, &conv, &handle);
// Set XDG_SESSION_TYPE earlier to fix some bugs
env_xdg_session(desktop->display_server[desktop->cur]);
if (ok != PAM_SUCCESS)
{
pam_diagnose(ok, buf);
@ -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);

Loading…
Cancel
Save