aboutsummaryrefslogtreecommitdiff
path: root/sway/config
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-03-28 16:38:11 -0400
committerDrew DeVault <sir@cmpwn.com>2018-03-28 16:42:13 -0400
commit68cfa7ef6705c530ff28d9754c5b6cab7b429150 (patch)
tree0c25eb44f1285f2522b6a5f014276239cfa6ae3f /sway/config
parent0c8a64942e087038806b353949c900e03fd764a8 (diff)
downloadsway-68cfa7ef6705c530ff28d9754c5b6cab7b429150.tar.xz
Render layer surfaces and respect exclusive zone
Diffstat (limited to 'sway/config')
-rw-r--r--sway/config/output.c31
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);
- }*/
+ }
}
}