diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-03-28 16:38:11 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-03-28 16:42:13 -0400 |
commit | 68cfa7ef6705c530ff28d9754c5b6cab7b429150 (patch) | |
tree | 0c25eb44f1285f2522b6a5f014276239cfa6ae3f /sway/config | |
parent | 0c8a64942e087038806b353949c900e03fd764a8 (diff) | |
download | sway-68cfa7ef6705c530ff28d9754c5b6cab7b429150.tar.xz |
Render layer surfaces and respect exclusive zone
Diffstat (limited to 'sway/config')
-rw-r--r-- | sway/config/output.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/sway/config/output.c b/sway/config/output.c index 69e883f1..c4168b4f 100644 --- a/sway/config/output.c +++ b/sway/config/output.c @@ -1,9 +1,12 @@ #define _XOPEN_SOURCE 700 +#include <assert.h> #include <stdbool.h> #include <string.h> -#include <assert.h> +#include <signal.h> +#include <sys/wait.h> #include <wlr/types/wlr_output.h> #include <wlr/types/wlr_output_layout.h> +#include <unistd.h> #include "sway/config.h" #include "sway/output.h" #include "log.h" @@ -107,6 +110,16 @@ static void set_mode(struct wlr_output *output, int width, int height, } } +void terminate_swaybg(pid_t pid) { + int ret = kill(pid, SIGTERM); + if (ret != 0) { + wlr_log(L_ERROR, "Unable to terminate swaybg [pid: %d]", pid); + } else { + int status; + waitpid(pid, &status, 0); + } +} + void apply_output_config(struct output_config *oc, swayc_t *output) { assert(output->type == C_OUTPUT); @@ -160,12 +173,12 @@ void apply_output_config(struct output_config *oc, swayc_t *output) { } if (oc && oc->background) { - // TODO swaybg - /*if (output->bg_pid != 0) { - terminate_swaybg(output->bg_pid); + if (output->sway_output->bg_pid != 0) { + terminate_swaybg(output->sway_output->bg_pid); } - wlr_log(L_DEBUG, "Setting background for output %d to %s", output_i, oc->background); + wlr_log(L_DEBUG, "Setting background for output %d to %s", + output_i, oc->background); size_t bufsize = 12; char output_id[bufsize]; @@ -173,17 +186,17 @@ void apply_output_config(struct output_config *oc, swayc_t *output) { output_id[bufsize-1] = 0; char *const cmd[] = { - "swaybg", + "./swaybg/swaybg", output_id, oc->background, oc->background_option, NULL, }; - output->bg_pid = fork(); - if (output->bg_pid == 0) { + output->sway_output->bg_pid = fork(); + if (output->sway_output->bg_pid == 0) { execvp(cmd[0], cmd); - }*/ + } } } |