diff --git a/src/config.h b/src/config.h index 52f2787..e3f79f2 100755 --- a/src/config.h +++ b/src/config.h @@ -26,7 +26,7 @@ #define LY_CMD_X "/usr/bin/X" #define LY_CMD_TPUT "/usr/bin/tput" #define LY_CMD_HALT "/sbin/shutdown" -#define LY_CMD_XINITRC "exec /bin/bash --login ~/.xinitrc " +#define LY_CMD_XINITRC ".xinitrc" #define LY_CMD_MCOOKIE "/usr/bin/mcookie" #define LY_XAUTHORITY ".lyxauth" diff --git a/src/desktop.c b/src/desktop.c index 6acbf24..775e0fc 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -98,7 +98,7 @@ struct delist_t* init_list(int count) list->props[0].cmd = strdup(""); list->props[0].type = shell; list->props[1].cmd = strdup(LY_CMD_XINITRC); - list->props[1].type = xorg; + list->props[1].type = xinitrc; return list; } diff --git a/src/desktop.h b/src/desktop.h index 2468ee5..7a7be6a 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -1,7 +1,7 @@ #ifndef _DESKTOP_H_ #define _DESKTOP_H_ -enum deserv_t {shell, xorg, wayland}; +enum deserv_t {shell, xorg, xinitrc, wayland}; struct deprops_t { diff --git a/src/login.c b/src/login.c index 0313727..8eedc85 100644 --- a/src/login.c +++ b/src/login.c @@ -339,8 +339,12 @@ const char* de_command, enum deserv_t display_server) break; case xorg: + launch_xorg(pwd, login_handle, de_command, display_name, vt, 0); + break; + + case xinitrc: default : - launch_xorg(pwd, login_handle, de_command, display_name, vt); + launch_xorg(pwd, login_handle, de_command, display_name, vt, 1); break; } @@ -430,7 +434,7 @@ const char* de_command, enum deserv_t display_server) } void launch_xorg(struct passwd* pwd, pam_handle_t* pam_handle, -const char* de_command, const char* display_name, const char* vt) +const char* de_command, const char* display_name, const char* vt, int xinitrc) { FILE* file; pid_t xauth_pid; @@ -455,7 +459,7 @@ const char* de_command, const char* display_name, const char* vt) reset_terminal(pwd); /* starts session */ snprintf(cmd, sizeof(cmd), - "exec xinit /usr/bin/%s -- %s %s %s -auth %s", de_command, LY_CMD_X, + "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); diff --git a/src/login.h b/src/login.h index 7f34e6b..e157d42 100644 --- a/src/login.h +++ b/src/login.h @@ -10,7 +10,7 @@ struct pam_response** resp, void* appdata_ptr); int start_env(const char* username, const char* password, const char* de_command, enum deserv_t display_server); void launch_xorg(struct passwd* pwd, pam_handle_t* pam_handle, -const char* de_command, const char* display_name, const char* vt); +const char* de_command, const char* display_name, const char* vt, int xinitrc); void launch_wayland(struct passwd* pwd, pam_handle_t* pam_handle, const char* de_command); void launch_shell(struct passwd* pwd, pam_handle_t* pam_handle);