diff options
| -rw-r--r-- | i3status.c | 2 | ||||
| -rw-r--r-- | include/i3status.h | 2 | ||||
| -rw-r--r-- | src/print_volume.c | 12 | 
3 files changed, 13 insertions, 3 deletions
@@ -286,6 +286,7 @@ int main(int argc, char *argv[]) {          cfg_opt_t volume_opts[] = {                  CFG_STR("format", "♪: %volume", CFGF_NONE), +                CFG_STR("format_muted", "♪: 0%%", CFGF_NONE),                  CFG_STR("device", "default", CFGF_NONE),                  CFG_STR("mixer", "Master", CFGF_NONE),                  CFG_INT("mixer_idx", 0, CFGF_NONE), @@ -513,6 +514,7 @@ int main(int argc, char *argv[]) {                          CASE_SEC_TITLE("volume") {                                  SEC_OPEN_MAP("volume");                                  print_volume(json_gen, buffer, cfg_getstr(sec, "format"), +                                             cfg_getstr(sec, "format_muted"),                                               cfg_getstr(sec, "device"),                                               cfg_getstr(sec, "mixer"),                                               cfg_getint(sec, "mixer_idx")); diff --git a/include/i3status.h b/include/i3status.h index d0361d1..64cd660 100644 --- a/include/i3status.h +++ b/include/i3status.h @@ -156,7 +156,7 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const  void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format);  void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down);  void print_load(yajl_gen json_gen, char *buffer, const char *format, const float max_threshold); -void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *device, const char *mixer, int mixer_idx); +void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx);  bool process_runs(const char *path);  /* socket file descriptor for general purposes */ diff --git a/src/print_volume.c b/src/print_volume.c index d84b3ec..493167a 100644 --- a/src/print_volume.c +++ b/src/print_volume.c @@ -26,7 +26,7 @@  #include "i3status.h"  #include "queue.h" -void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *device, const char *mixer, int mixer_idx) { +void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx) {          char *outwalk = buffer;  	int pbval = 1; @@ -104,7 +104,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *  			fprintf (stderr, "i3status: ALSA: playback_switch: %s\n", snd_strerror(err));  		if (!pbval)  {  			START_COLOR("color_degraded"); -			avg = 0; +			fmt = fmt_muted;  		}  	} @@ -117,6 +117,10 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *                          *(outwalk++) = *walk;  			continue;  		} +		if (BEGINS_WITH(walk+1, "%")) { +			outwalk += sprintf(outwalk, "%%"); +			walk += strlen("%"); +		}  		if (BEGINS_WITH(walk+1, "volume")) {  			outwalk += sprintf(outwalk, "%d%%", avg);  			walk += strlen("volume"); @@ -156,6 +160,10 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *                          *(outwalk++) = *walk;                          continue;                  } +                if (BEGINS_WITH(walk+1, "%")) { +                        outwalk += sprintf(outwalk, "%%"); +                        walk += strlen("%"); +                }                  if (BEGINS_WITH(walk+1, "volume")) {                          outwalk += sprintf(outwalk, "%d%%", vol & 0x7f);                          walk += strlen("volume");  | 
