From 013fdece8dbf31acf531b4745e335bb0edb56a2e Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 24 Oct 2009 13:27:02 +0200 Subject: [PATCH] Change output format to be a config option instead of a compile time define --- i3status.c | 12 ++++++++++++ i3status.h | 9 +-------- src/output.c | 27 ++++++++++++++------------- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/i3status.c b/i3status.c index 67b86dd..c6e36f5 100644 --- a/i3status.c +++ b/i3status.c @@ -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"); diff --git a/i3status.h b/i3status.h index 0a42555..4c7d4b4 100644 --- a/i3status.h +++ b/i3status.h @@ -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 #include -#ifdef DZEN - #define BAR "^fg(#333333)^p(5;-2)^ro(2)^p()^fg()^p(5)" -#elif XMOBAR - #define BAR " | " -#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), "", 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), "", colorstr); + return colorbuf; } @@ -33,15 +33,16 @@ char *color(const char *colorstr) { * */ char *endcolor() { -#ifdef XMOBAR - return ""; -#else - return ""; -#endif + if (output_format == O_XMOBAR) + return ""; + 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(" | "); + else if (output_format == O_NONE) + printf(" | "); }