summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2015-12-19 01:03:39 +0100
committerLibravatar Mikkel Oscar Lyderik <mikkeloscar@gmail.com>2015-12-19 01:03:39 +0100
commit207678e809eb4655ed725f904e25fb0df862dd6f (patch)
treeb54ef9cdfef7f0de3bb9922674dfbfa97515e49c
parentMerge pull request #360 from sce/fix_arrange_windows (diff)
downloadsway-207678e809eb4655ed725f904e25fb0df862dd6f.tar.gz
sway-207678e809eb4655ed725f904e25fb0df862dd6f.tar.zst
sway-207678e809eb4655ed725f904e25fb0df862dd6f.zip
Add support for running swaybar_command
-rw-r--r--sway/config.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/sway/config.c b/sway/config.c
index b0871366..faa3e387 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -371,18 +371,35 @@ static void invoke_swaybar(swayc_t *output, struct bar_config *bar, int output_i
371 snprintf(output_id, bufsize, "%d", output_i); 371 snprintf(output_id, bufsize, "%d", output_i);
372 output_id[bufsize-1] = 0; 372 output_id[bufsize-1] = 0;
373 373
374 char *const cmd[] = {
375 "swaybar",
376 "-b",
377 bar->id,
378 output_id,
379 NULL,
380 };
381
382 pid_t *pid = malloc(sizeof(pid_t)); 374 pid_t *pid = malloc(sizeof(pid_t));
383 *pid = fork(); 375 *pid = fork();
384 if (*pid == 0) { 376 if (*pid == 0) {
385 execvp(cmd[0], cmd); 377 if (!bar->swaybar_command) {
378 char *const cmd[] = {
379 "swaybar",
380 "-b",
381 bar->id,
382 output_id,
383 NULL,
384 };
385
386 execvp(cmd[0], cmd);
387 } else {
388 // run custom swaybar
389 int len = strlen(bar->swaybar_command) + strlen(bar->id) + strlen(output_id) + 6;
390 char *command = malloc(len * sizeof(char));
391 snprintf(command, len, "%s -b %s %s", bar->swaybar_command, bar->id, output_id);
392
393 char *const cmd[] = {
394 "sh",
395 "-c",
396 command,
397 NULL,
398 };
399
400 execvp(cmd[0], cmd);
401 free(command);
402 }
386 } 403 }
387 404
388 // add swaybar pid to output 405 // add swaybar pid to output