From 24ab6ed55f2d7831d0515741697bfbe8bba0a07f Mon Sep 17 00:00:00 2001 From: cylgom Date: Wed, 27 Sep 2017 21:18:57 +0200 Subject: [PATCH] removed dbus launch and added required xdg runtime env var --- src/config.h | 1 + src/login.c | 33 ++++++++++----------------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/config.h b/src/config.h index db8baf6..4b03fd3 100755 --- a/src/config.h +++ b/src/config.h @@ -33,6 +33,7 @@ /* paths */ #define LY_PATH "/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/env" #define LY_PATH_XSESSIONS "/usr/share/xsessions" +#define LY_PATH_RUNTIME_DIR "/run/user/1000" /* console */ #define LY_CONSOLE_DEV "/dev/console" diff --git a/src/login.c b/src/login.c index a1d050b..d7ee889 100644 --- a/src/login.c +++ b/src/login.c @@ -463,6 +463,8 @@ int xinitrc) pid_t child; int status; char cmd[LY_LIM_CMD]; + char* argv[] = {pwd->pw_shell, "-c", cmd, NULL}; + extern char** environ; /* updates cookie */ snprintf(cmd, sizeof(cmd), "exec xauth add %s . `%s`", display_name, LY_CMD_MCOOKIE); @@ -479,29 +481,13 @@ int xinitrc) } waitpid(child, &status, 0); - /* starts X */ - child = fork(); - - if(child == 0) - { - reset_terminal(pwd); - /* starts session */ - snprintf(cmd, sizeof(cmd), - "exec xinit %s%s -- %s %s %s -auth %s", xinitrc ? "" : "/usr/bin/", - de_command, LY_CMD_X, - display_name, vt, getenv("XAUTHORITY")); - execl(pwd->pw_shell, pwd->pw_shell, "-c", cmd, NULL); - exit(0); - } - else - { - /* handles DBus */ - snprintf(cmd, sizeof(cmd), - "exec dbus-launch --exit-with-session %s", de_command); - waitpid(child, &status, 0); - execl(pwd->pw_shell, "-c", cmd, NULL); - exit(0); - } + reset_terminal(pwd); + snprintf(cmd, sizeof(cmd), + "exec xinit %s%s -- %s %s %s -auth %s", xinitrc ? "" : "/usr/bin/", + de_command, LY_CMD_X, + display_name, vt, getenv("XAUTHORITY")); + execve(pwd->pw_shell, argv, environ); + exit(0); } void launch_wayland(struct passwd* pwd, pam_handle_t* pam_handle, @@ -537,6 +523,7 @@ enum deserv_t display_server) setenv("XDG_SESSION_CLASS", "user", 0); setenv("XDG_SEAT", "seat0", 0); setenv("XDG_VTNR", tty_id, 0); + setenv("XDG_RUNTIME_DIR", LY_PATH_RUNTIME_DIR, 0); setenv("DISPLAY", display_name, 1); switch(display_server)