mirror of
https://github.com/fairyglade/ly.git
synced 2025-12-21 03:34:54 +00:00
Set XDG_SESSION_TYPE earlier to fix some bugs
This commit is contained in:
24
src/login.c
24
src/login.c
@@ -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)
|
switch (display_server)
|
||||||
{
|
{
|
||||||
case DS_WAYLAND:
|
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(
|
void add_utmp_entry(
|
||||||
struct utmp *entry,
|
struct utmp *entry,
|
||||||
char *username,
|
char *username,
|
||||||
@@ -478,6 +481,9 @@ void auth(
|
|||||||
|
|
||||||
ok = pam_start(config.service_name, NULL, &conv, &handle);
|
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)
|
if (ok != PAM_SUCCESS)
|
||||||
{
|
{
|
||||||
pam_diagnose(ok, buf);
|
pam_diagnose(ok, buf);
|
||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user