diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-12-18 19:17:56 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-12-18 19:17:56 -0500 |
commit | 253efad43758a10ce26a767d4ad42cc5c32f8d0d (patch) | |
tree | a7973dad4c4871f93708c503cdefa03f0695f425 /sway | |
parent | Fix default workspace name generation (diff) | |
parent | Add support for running swaybar_command (diff) | |
download | sway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.tar.gz sway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.tar.zst sway-253efad43758a10ce26a767d4ad42cc5c32f8d0d.zip |
Merge pull request #361 from mikkeloscar/i3bar-command
Add support for running swaybar_command
Diffstat (limited to 'sway')
-rw-r--r-- | sway/config.c | 35 |
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 |