summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2015-12-18 19:17:56 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2015-12-18 19:17:56 -0500
commit253efad43758a10ce26a767d4ad42cc5c32f8d0d (patch)
treea7973dad4c4871f93708c503cdefa03f0695f425
parentFix default workspace name generation (diff)
parentAdd support for running swaybar_command (diff)
downloadsway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.tar.gz
sway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.tar.zst
sway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.zip
Merge pull request #361 from mikkeloscar/i3bar-command
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