endif
# Define this if you want i3status to spit out dzen2-compatible output on stdout
-CFLAGS+=-DDZEN
+#CFLAGS+=-DDZEN
CFLAGS+=$(EXTRA_CFLAGS)
src/%.o: src/%.c
# Build with wmii support
$(MAKE)
cp $(CURDIR)/i3status $(CURDIR)/i3status-wmii
+ # Build with xmobar support
+ $(MAKE) distclean
+ $(MAKE) EXTRA_CFLAGS="-DXMOBAR"
+ cp $(CURDIR)/i3status $(CURDIR)/i3status-xmobar
# Build with dzen support
$(MAKE) distclean
$(MAKE) EXTRA_CFLAGS="-DDZEN"
dh_installdirs
$(MAKE) DESTDIR=$(CURDIR)/debian/i3status/ install
install -m 755 $(CURDIR)/i3status-wmii $(CURDIR)/debian/i3status/usr/bin/i3status-wmii
+ install -m 755 $(CURDIR)/i3status-xmobar $(CURDIR)/debian/i3status/usr/bin/i3status-xmobar
dh_link usr/share/man/man1/i3status.1 usr/share/man/man1/i3status-wmii.1
# Build architecture-independent files here.
for (i = 0; i < num_run_watches; i += 2) {
bool running = process_runs(run_watches[i+1]);
if (use_colors)
- snprintf(part, sizeof(part), "%s%s: %s",
+ snprintf(part, sizeof(part), "%s%s: %s%s",
(running ? color("#00FF00") : color("#FF0000")),
run_watches[i],
- (running ? "yes" : "no"));
+ (running ? "yes" : "no"), endcolor());
else snprintf(part, sizeof(part), "%s: %s", run_watches[i], (running ? "yes" : "no"));
snprintf(pathbuf, sizeof(pathbuf), "%d%s", order[ORDER_RUN], run_watches[i]);
write_to_statusbar(pathbuf, part, false);
#include "queue.h"
-#define BAR "^fg(#333333)^p(5;-2)^ro(2)^p()^fg()^p(5)"
+#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)
/* src/output.c */
void write_error_to_statusbar(const char *message);
char *color(const char *colorstr);
+char *endcolor() __attribute__ ((pure));
void cleanup_rbar_dir();
/* src/config.c */
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
+#include <glob.h>
#include "i3status.h"
interval = atoi(dest_value);
OPT("wmii_path")
{
-#ifndef DZEN
+#if !defined(DZEN) && !defined(XMOBAR)
static glob_t globbuf;
struct stat stbuf;
if (glob(dest_value, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0)
}
fclose(handle);
-#ifndef DZEN
+#if !defined(DZEN) && !defined(XMOBAR)
if (wmii_path == NULL)
exit(EXIT_FAILURE);
#endif
continue;
if ((quality == UCHAR_MAX) || (quality == 0)) {
if (use_colors)
- (void)snprintf(part, sizeof(part), "%sW: down", color("#FF0000"));
+ (void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor());
else (void)snprintf(part, sizeof(part), "W: down");
- } else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s",
- color("#00FF00"), quality, get_ip_addr(wlan_interface));
+ } else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s%s",
+ color("#00FF00"), quality, get_ip_addr(wlan_interface), endcolor());
return part;
}
static char colorbuf[32];
#ifdef DZEN
(void)snprintf(colorbuf, sizeof(colorbuf), "^fg(%s)", colorstr);
+#elif XMOBAR
+ (void)snprintf(colorbuf, sizeof(colorbuf), "<fc=%s>", colorstr);
#else
(void)snprintf(colorbuf, sizeof(colorbuf), "%s %s ", colorstr, wmii_normcolors);
#endif
return colorbuf;
}
+/*
+ * Some color formats (xmobar) require to terminate colors again
+ *
+ */
+char *endcolor() {
+#ifdef XMOBAR
+ return "</fc>";
+#else
+ return "";
+#endif
+}
+
/*
* Cleans wmii's /rbar directory by deleting all regular files
*
*/
void cleanup_rbar_dir() {
-#ifdef DZEN
+#if defined(DZEN) || defined(XMOBAR)
return;
#endif
struct dirent *ent;
*
*/
void create_file(const char *name) {
-#ifdef DZEN
+#if defined(DZEN) || defined(XMOBAR)
return;
#endif
char pathbuf[strlen(wmii_path)+256+1];
unsigned int i;
char pathbuf[512];
-#ifndef DZEN
+#if !defined(DZEN) && !defined(XMOBAR)
struct stat statbuf;
/* Wait until wmii_path/rbar exists */
for (; stat(wmii_path, &statbuf) < 0; sleep(interval));
exit(1);
}
return;
+#elif XMOBAR
+ if (final_entry) {
+ if (printf("%s\n", message) < 0) {
+ perror("printf");
+ exit(1);
+ }
+
+ fflush(stdout);
+ return;
+ }
+ if (printf("%s" BAR, message) < 0) {
+ perror("printf");
+ exit(1);
+ }
+ return;
+
#endif
char pathbuf[strlen(wmii_path)+256+1];