From a13b2e7288e943359ccb37be86efb716efbe98c8 Mon Sep 17 00:00:00 2001 From: Brendan Van Hook Date: Fri, 2 Oct 2015 02:28:53 -0400 Subject: Added support for lemonbar --- i3status.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'i3status.c') diff --git a/i3status.c b/i3status.c index 000584a..462721b 100644 --- a/i3status.c +++ b/i3status.c @@ -163,11 +163,21 @@ static int parse_min_width(cfg_t *context, cfg_opt_t *option, const char *value, * */ static int valid_color(const char *value) { - if (strlen(value) != 7) - return 0; + const int len = strlen(value); + + if (output_format == O_LEMONBAR) { + /* lemonbar supports an optional alpha channel */ + if (len != strlen("#rrggbb") && len != strlen("#aarrggbb")) { + return 0; + } + } else { + if (len != strlen("#rrggbb")) { + return 0; + } + } if (value[0] != '#') return 0; - for (int i = 1; i < 7; ++i) { + for (int i = 1; i < len; ++i) { if (value[i] >= '0' && value[i] <= '9') continue; if (value[i] >= 'a' && value[i] <= 'f') @@ -501,6 +511,8 @@ int main(int argc, char *argv[]) { output_format = O_XMOBAR; else if (strcasecmp(output_str, "i3bar") == 0) output_format = O_I3BAR; + else if (strcasecmp(output_str, "lemonbar") == 0) + output_format = O_LEMONBAR; else if (strcasecmp(output_str, "term") == 0) output_format = O_TERM; else if (strcasecmp(output_str, "none") == 0) @@ -510,6 +522,9 @@ int main(int argc, char *argv[]) { const char *separator = cfg_getstr(cfg_general, "separator"); + /* lemonbar needs % to be escaped with another % */ + pct_mark = (output_format == O_LEMONBAR) ? "%%" : "%"; + // if no custom separator has been provided, use the default one if (strcasecmp(separator, "default") == 0) separator = get_default_separator(); -- cgit v1.2.3