]> git.sur5r.net Git - i3/i3status/commitdiff
Change output format to be a config option instead of a compile time define
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 24 Oct 2009 11:27:02 +0000 (13:27 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 24 Oct 2009 11:27:02 +0000 (13:27 +0200)
i3status.c
i3status.h
src/output.c

index 67b86ddbf5e17ddcf06475a02d552276b9bece29..c6e36f55c76f14ec69372245bc90d9c18342288b 100644 (file)
@@ -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");
index 0a425558bab24375da20fb048072737cdf757dd0..4c7d4b4dcb6b6876a89e033aa0bf63ac6d30ff7f 100644 (file)
@@ -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))
 
index d4d8c2f441d3ff02c91425a3827e7c98ec98c7b5..3d6666e1409c494baa1829151538e22f5d6dc562 100644 (file)
@@ -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(" | ");
 }