Merge pull request #1866 from ggreer/swaybar-cmd-sh

invoke_swaybar: Set process group id
This commit is contained in:
emersion 2018-04-27 08:18:26 +01:00 committed by GitHub
commit 85ec700206
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,7 +17,7 @@
static void terminate_swaybar(pid_t pid) { static void terminate_swaybar(pid_t pid) {
wlr_log(L_DEBUG, "Terminating swaybar %d", pid); wlr_log(L_DEBUG, "Terminating swaybar %d", pid);
int ret = kill(pid, SIGTERM); int ret = kill(-pid, SIGTERM);
if (ret != 0) { if (ret != 0) {
wlr_log_errno(L_ERROR, "Unable to terminate swaybar %d", pid); wlr_log_errno(L_ERROR, "Unable to terminate swaybar %d", pid);
} else { } else {
@ -163,6 +163,7 @@ void invoke_swaybar(struct bar_config *bar) {
bar->pid = fork(); bar->pid = fork();
if (bar->pid == 0) { if (bar->pid == 0) {
setpgid(0, 0);
close(filedes[0]); close(filedes[0]);
// run custom swaybar // run custom swaybar
@ -172,9 +173,9 @@ void invoke_swaybar(struct bar_config *bar) {
char *command = malloc(len + 1); char *command = malloc(len + 1);
if (!command) { if (!command) {
const char msg[] = "Unable to allocate swaybar command string"; const char msg[] = "Unable to allocate swaybar command string";
size_t len = sizeof(msg); size_t msg_len = sizeof(msg);
if (write(filedes[1], &len, sizeof(int))) {}; if (write(filedes[1], &msg_len, sizeof(int))) {};
if (write(filedes[1], msg, len)) {}; if (write(filedes[1], msg, msg_len)) {};
close(filedes[1]); close(filedes[1]);
exit(1); exit(1);
} }