diff options
| -rw-r--r-- | i3status.c | 12 | ||||
| -rw-r--r-- | i3status.h | 9 | ||||
| -rw-r--r-- | src/output.c | 27 | 
3 files changed, 27 insertions, 21 deletions
| @@ -41,6 +41,7 @@ int main(int argc, char *argv[]) {          unsigned int j;          cfg_opt_t general_opts[] = { +                CFG_STR("output_format", "dzen2", CFGF_NONE),                  CFG_BOOL("colors", 1, CFGF_NONE),                  CFG_INT("interval", 1, CFGF_NONE),                  CFG_END() @@ -137,6 +138,17 @@ int main(int argc, char *argv[]) {                  return EXIT_FAILURE;          cfg_general = cfg_getsec(cfg, "general"); +        if (cfg_general == NULL) +                die("Could not get section \"general\"\n"); + +        char *output_str = cfg_getstr(cfg_general, "output_format"); +        if (strcasecmp(output_str, "dzen2") == 0) +                output_format = O_DZEN2; +        else if (strcasecmp(output_str, "xmobar") == 0) +                output_format = O_XMOBAR; +        else if (strcasecmp(output_str, "none") == 0) +                output_format = O_NONE; +        else die("Unknown output format: \"%s\"\n", output_str);          if ((general_socket = socket(AF_INET, SOCK_DGRAM, 0)) == -1)                  die("Could not create socket\n"); @@ -1,18 +1,11 @@  #ifndef _I3STATUS_H  #define _I3STATUS_H -#if !defined(DZEN) && !defined(XMOBAR) -	#error "You have to enable either -DDZEN or -DXMOBAR" -#endif +enum { O_DZEN2, O_XMOBAR, O_NONE } output_format;  #include <stdbool.h>  #include <confuse.h> -#ifdef DZEN -	#define BAR "^fg(#333333)^p(5;-2)^ro(2)^p()^fg()^p(5)" -#elif XMOBAR -	#define BAR "<fc=#333333> | </fc>" -#endif  #define BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)  #define max(a, b) ((a) > (b) ? (a) : (b)) diff --git a/src/output.c b/src/output.c index d4d8c2f..3d6666e 100644 --- a/src/output.c +++ b/src/output.c @@ -20,11 +20,11 @@ char *color(const char *colorstr) {                  colorbuf[0] = '\0';                  return colorbuf;          } -#ifdef DZEN -        (void)snprintf(colorbuf, sizeof(colorbuf), "^fg(%s)", colorstr); -#elif XMOBAR -        (void)snprintf(colorbuf, sizeof(colorbuf), "<fc=%s>", colorstr); -#endif +        if (output_format == O_DZEN2) +                (void)snprintf(colorbuf, sizeof(colorbuf), "^fg(%s)", colorstr); +        else if (output_format == O_XMOBAR) +                (void)snprintf(colorbuf, sizeof(colorbuf), "<fc=%s>", colorstr); +          return colorbuf;  } @@ -33,15 +33,16 @@ char *color(const char *colorstr) {   *   */  char *endcolor() { -#ifdef XMOBAR -        return "</fc>"; -#else -        return ""; -#endif +        if (output_format == O_XMOBAR) +                return "</fc>"; +        else return "";  }  void print_seperator() { -#if defined(DZEN) || defined(XMOBAR) -        printf("%s", BAR); -#endif +        if (output_format == O_DZEN2) +                printf("^fg(#333333)^p(5;-2)^ro(2)^p()^fg()^p(5)"); +        else if (output_format == O_XMOBAR) +                printf("<fc=#333333> | </fc>"); +        else if (output_format == O_NONE) +                printf(" | ");  } | 
