Add support for xmobar
Use i3status-xmobar | xmobar -o -t "%StdinReader%" -c "[Run StdinReader]" You might need to copy the default configuration to ~/.xmobarrc
This commit is contained in:
parent
56312001de
commit
bb52b40c8e
2
Makefile
2
Makefile
@ -13,7 +13,7 @@ CFLAGS+=-D_GNU_SOURCE
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Define this if you want i3status to spit out dzen2-compatible output on stdout
|
# Define this if you want i3status to spit out dzen2-compatible output on stdout
|
||||||
CFLAGS+=-DDZEN
|
#CFLAGS+=-DDZEN
|
||||||
CFLAGS+=$(EXTRA_CFLAGS)
|
CFLAGS+=$(EXTRA_CFLAGS)
|
||||||
|
|
||||||
src/%.o: src/%.c
|
src/%.o: src/%.c
|
||||||
|
5
debian/rules
vendored
5
debian/rules
vendored
@ -16,6 +16,10 @@ build-stamp:
|
|||||||
# Build with wmii support
|
# Build with wmii support
|
||||||
$(MAKE)
|
$(MAKE)
|
||||||
cp $(CURDIR)/i3status $(CURDIR)/i3status-wmii
|
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
|
# Build with dzen support
|
||||||
$(MAKE) distclean
|
$(MAKE) distclean
|
||||||
$(MAKE) EXTRA_CFLAGS="-DDZEN"
|
$(MAKE) EXTRA_CFLAGS="-DDZEN"
|
||||||
@ -36,6 +40,7 @@ install: build
|
|||||||
dh_installdirs
|
dh_installdirs
|
||||||
$(MAKE) DESTDIR=$(CURDIR)/debian/i3status/ install
|
$(MAKE) DESTDIR=$(CURDIR)/debian/i3status/ install
|
||||||
install -m 755 $(CURDIR)/i3status-wmii $(CURDIR)/debian/i3status/usr/bin/i3status-wmii
|
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
|
dh_link usr/share/man/man1/i3status.1 usr/share/man/man1/i3status-wmii.1
|
||||||
|
|
||||||
# Build architecture-independent files here.
|
# Build architecture-independent files here.
|
||||||
|
@ -136,10 +136,10 @@ int main(int argc, char *argv[]) {
|
|||||||
for (i = 0; i < num_run_watches; i += 2) {
|
for (i = 0; i < num_run_watches; i += 2) {
|
||||||
bool running = process_runs(run_watches[i+1]);
|
bool running = process_runs(run_watches[i+1]);
|
||||||
if (use_colors)
|
if (use_colors)
|
||||||
snprintf(part, sizeof(part), "%s%s: %s",
|
snprintf(part, sizeof(part), "%s%s: %s%s",
|
||||||
(running ? color("#00FF00") : color("#FF0000")),
|
(running ? color("#00FF00") : color("#FF0000")),
|
||||||
run_watches[i],
|
run_watches[i],
|
||||||
(running ? "yes" : "no"));
|
(running ? "yes" : "no"), endcolor());
|
||||||
else snprintf(part, sizeof(part), "%s: %s", run_watches[i], (running ? "yes" : "no"));
|
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]);
|
snprintf(pathbuf, sizeof(pathbuf), "%d%s", order[ORDER_RUN], run_watches[i]);
|
||||||
write_to_statusbar(pathbuf, part, false);
|
write_to_statusbar(pathbuf, part, false);
|
||||||
|
@ -5,7 +5,11 @@
|
|||||||
|
|
||||||
#include "queue.h"
|
#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 BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)
|
||||||
#define max(a, b) (a > b ? a : b)
|
#define max(a, b) (a > b ? a : b)
|
||||||
|
|
||||||
@ -55,6 +59,7 @@ bool slurp(char *filename, char *destination, int size);
|
|||||||
/* src/output.c */
|
/* src/output.c */
|
||||||
void write_error_to_statusbar(const char *message);
|
void write_error_to_statusbar(const char *message);
|
||||||
char *color(const char *colorstr);
|
char *color(const char *colorstr);
|
||||||
|
char *endcolor() __attribute__ ((pure));
|
||||||
void cleanup_rbar_dir();
|
void cleanup_rbar_dir();
|
||||||
|
|
||||||
/* src/config.c */
|
/* src/config.c */
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <glob.h>
|
||||||
|
|
||||||
#include "i3status.h"
|
#include "i3status.h"
|
||||||
|
|
||||||
@ -80,7 +81,7 @@ int load_configuration(const char *configfile) {
|
|||||||
interval = atoi(dest_value);
|
interval = atoi(dest_value);
|
||||||
OPT("wmii_path")
|
OPT("wmii_path")
|
||||||
{
|
{
|
||||||
#ifndef DZEN
|
#if !defined(DZEN) && !defined(XMOBAR)
|
||||||
static glob_t globbuf;
|
static glob_t globbuf;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
if (glob(dest_value, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0)
|
if (glob(dest_value, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0)
|
||||||
@ -139,7 +140,7 @@ int load_configuration(const char *configfile) {
|
|||||||
}
|
}
|
||||||
fclose(handle);
|
fclose(handle);
|
||||||
|
|
||||||
#ifndef DZEN
|
#if !defined(DZEN) && !defined(XMOBAR)
|
||||||
if (wmii_path == NULL)
|
if (wmii_path == NULL)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,10 +34,10 @@ const char *get_wireless_info() {
|
|||||||
continue;
|
continue;
|
||||||
if ((quality == UCHAR_MAX) || (quality == 0)) {
|
if ((quality == UCHAR_MAX) || (quality == 0)) {
|
||||||
if (use_colors)
|
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), "W: down");
|
||||||
} else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s",
|
} else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s%s",
|
||||||
color("#00FF00"), quality, get_ip_addr(wlan_interface));
|
color("#00FF00"), quality, get_ip_addr(wlan_interface), endcolor());
|
||||||
return part;
|
return part;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
36
src/output.c
36
src/output.c
@ -28,18 +28,32 @@ char *color(const char *colorstr) {
|
|||||||
static char colorbuf[32];
|
static char colorbuf[32];
|
||||||
#ifdef DZEN
|
#ifdef DZEN
|
||||||
(void)snprintf(colorbuf, sizeof(colorbuf), "^fg(%s)", colorstr);
|
(void)snprintf(colorbuf, sizeof(colorbuf), "^fg(%s)", colorstr);
|
||||||
|
#elif XMOBAR
|
||||||
|
(void)snprintf(colorbuf, sizeof(colorbuf), "<fc=%s>", colorstr);
|
||||||
#else
|
#else
|
||||||
(void)snprintf(colorbuf, sizeof(colorbuf), "%s %s ", colorstr, wmii_normcolors);
|
(void)snprintf(colorbuf, sizeof(colorbuf), "%s %s ", colorstr, wmii_normcolors);
|
||||||
#endif
|
#endif
|
||||||
return colorbuf;
|
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
|
* Cleans wmii's /rbar directory by deleting all regular files
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void cleanup_rbar_dir() {
|
void cleanup_rbar_dir() {
|
||||||
#ifdef DZEN
|
#if defined(DZEN) || defined(XMOBAR)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
struct dirent *ent;
|
struct dirent *ent;
|
||||||
@ -66,7 +80,7 @@ void cleanup_rbar_dir() {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void create_file(const char *name) {
|
void create_file(const char *name) {
|
||||||
#ifdef DZEN
|
#if defined(DZEN) || defined(XMOBAR)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
char pathbuf[strlen(wmii_path)+256+1];
|
char pathbuf[strlen(wmii_path)+256+1];
|
||||||
@ -99,7 +113,7 @@ void setup(void) {
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
char pathbuf[512];
|
char pathbuf[512];
|
||||||
|
|
||||||
#ifndef DZEN
|
#if !defined(DZEN) && !defined(XMOBAR)
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
/* Wait until wmii_path/rbar exists */
|
/* Wait until wmii_path/rbar exists */
|
||||||
for (; stat(wmii_path, &statbuf) < 0; sleep(interval));
|
for (; stat(wmii_path, &statbuf) < 0; sleep(interval));
|
||||||
@ -142,6 +156,22 @@ void write_to_statusbar(const char *name, const char *message, bool final_entry)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
return;
|
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
|
#endif
|
||||||
|
|
||||||
char pathbuf[strlen(wmii_path)+256+1];
|
char pathbuf[strlen(wmii_path)+256+1];
|
||||||
|
Loading…
Reference in New Issue
Block a user