mirror of https://github.com/fairyglade/ly.git
added dbus support
This commit is contained in:
parent
23aa373f27
commit
ed477e61e3
|
|
@ -26,7 +26,7 @@
|
||||||
#define LY_CMD_X "/usr/bin/X"
|
#define LY_CMD_X "/usr/bin/X"
|
||||||
#define LY_CMD_TPUT "/usr/bin/tput"
|
#define LY_CMD_TPUT "/usr/bin/tput"
|
||||||
#define LY_CMD_HALT "/sbin/shutdown"
|
#define LY_CMD_HALT "/sbin/shutdown"
|
||||||
#define LY_CMD_XINITRC ".xinitrc"
|
#define LY_CMD_XINITRC "~/.xinitrc"
|
||||||
#define LY_CMD_MCOOKIE "/usr/bin/mcookie"
|
#define LY_CMD_MCOOKIE "/usr/bin/mcookie"
|
||||||
#define LY_XAUTHORITY ".lyxauth"
|
#define LY_XAUTHORITY ".lyxauth"
|
||||||
|
|
||||||
|
|
|
||||||
43
src/login.c
43
src/login.c
|
|
@ -434,11 +434,12 @@ const char* de_command, enum deserv_t display_server)
|
||||||
}
|
}
|
||||||
|
|
||||||
void launch_xorg(struct passwd* pwd, pam_handle_t* pam_handle,
|
void launch_xorg(struct passwd* pwd, pam_handle_t* pam_handle,
|
||||||
const char* de_command, const char* display_name, const char* vt, int xinitrc)
|
const char* de_command, const char* display_name, const char* vt,
|
||||||
|
int xinitrc)
|
||||||
{
|
{
|
||||||
FILE* file;
|
FILE* file;
|
||||||
pid_t xauth_pid;
|
pid_t child;
|
||||||
int xauth_status;
|
int status;
|
||||||
char cmd[LY_LIM_CMD];
|
char cmd[LY_LIM_CMD];
|
||||||
/* updates cookie */
|
/* updates cookie */
|
||||||
snprintf(cmd, sizeof(cmd), "exec xauth add %s . `%s`", display_name,
|
snprintf(cmd, sizeof(cmd), "exec xauth add %s . `%s`", display_name,
|
||||||
|
|
@ -447,22 +448,38 @@ const char* de_command, const char* display_name, const char* vt, int xinitrc)
|
||||||
file = fopen(getenv("XAUTHORITY"), "ab+");
|
file = fopen(getenv("XAUTHORITY"), "ab+");
|
||||||
fclose(file);
|
fclose(file);
|
||||||
/* generates the cookie */
|
/* generates the cookie */
|
||||||
xauth_pid = fork();
|
child = fork();
|
||||||
|
|
||||||
if(xauth_pid == 0)
|
if(child == 0)
|
||||||
{
|
{
|
||||||
execl(pwd->pw_shell, pwd->pw_shell, "-c", cmd, NULL);
|
execl(pwd->pw_shell, pwd->pw_shell, "-c", cmd, NULL);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
waitpid(xauth_pid, &xauth_status, 0);
|
waitpid(child, &status, 0);
|
||||||
reset_terminal(pwd);
|
/* starts X */
|
||||||
/* starts session */
|
child = fork();
|
||||||
snprintf(cmd, sizeof(cmd),
|
|
||||||
"exec xinit %s%s -- %s %s %s -auth %s", xinitrc ? "~/" : "/usr/bin/", de_command, LY_CMD_X,
|
if(child == 0)
|
||||||
display_name, vt, getenv("XAUTHORITY"));
|
{
|
||||||
execl(pwd->pw_shell, pwd->pw_shell, "-c", cmd, NULL);
|
reset_terminal(pwd);
|
||||||
exit(0);
|
/* 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void launch_wayland(struct passwd* pwd, pam_handle_t* pam_handle,
|
void launch_wayland(struct passwd* pwd, pam_handle_t* pam_handle,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue