aboutsummaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-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
snprintf(output_id, bufsize, "%d", output_i);
output_id[bufsize-1] = 0;
- char *const cmd[] = {
- "swaybar",
- "-b",
- bar->id,
- output_id,
- NULL,
- };
-
pid_t *pid = malloc(sizeof(pid_t));
*pid = fork();
if (*pid == 0) {
- execvp(cmd[0], cmd);
+ if (!bar->swaybar_command) {
+ char *const cmd[] = {
+ "swaybar",
+ "-b",
+ bar->id,
+ output_id,
+ NULL,
+ };
+
+ execvp(cmd[0], cmd);
+ } else {
+ // run custom swaybar
+ int len = strlen(bar->swaybar_command) + strlen(bar->id) + strlen(output_id) + 6;
+ char *command = malloc(len * sizeof(char));
+ snprintf(command, len, "%s -b %s %s", bar->swaybar_command, bar->id, output_id);
+
+ char *const cmd[] = {
+ "sh",
+ "-c",
+ command,
+ NULL,
+ };
+
+ execvp(cmd[0], cmd);
+ free(command);
+ }
}
// add swaybar pid to output