Added different format string for volume in case it is muted.
Patch status: needinfo
Patch by Gereon Kremer
Long description:
If the volume is muted, the volume level would simply be displayed as zero and the color changed to color_degraded.
This patch lets the user define a custom format string for when the volume is muted.
The default value is "♪: muted" ("♪: %volume" being the usual format).
To apply this patch, use:
curl http://cr.i3wm.org/patch/314/raw.patch | git am
b/i3status.c
| 21 |
@@ -286,6 +286,7 @@ int main(int argc, char *argv[]) {
|
| 22 |
|
| 23 |
cfg_opt_t volume_opts[] = {
|
| 24 |
CFG_STR("format", "♪: %volume", CFGF_NONE),
|
| 25 |
+ CFG_STR("format_muted", "♪: muted", CFGF_NONE),
|
| 26 |
CFG_STR("device", "default", CFGF_NONE),
|
| 27 |
CFG_STR("mixer", "Master", CFGF_NONE),
|
| 28 |
CFG_INT("mixer_idx", 0, CFGF_NONE),
|
| 29 |
@@ -513,6 +514,7 @@ int main(int argc, char *argv[]) {
|
| 30 |
CASE_SEC_TITLE("volume") {
|
| 31 |
SEC_OPEN_MAP("volume");
|
| 32 |
print_volume(json_gen, buffer, cfg_getstr(sec, "format"), |
| 33 |
+ cfg_getstr(sec, "format_muted"), |
| 34 |
cfg_getstr(sec, "device"), |
| 35 |
cfg_getstr(sec, "mixer"), |
| 36 |
cfg_getint(sec, "mixer_idx")); |
b/include/i3status.h
| 41 |
@@ -156,7 +156,7 @@ void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const |
| 42 |
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format); |
| 43 |
void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down); |
| 44 |
void print_load(yajl_gen json_gen, char *buffer, const char *format, const float max_threshold); |
| 45 |
-void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *device, const char *mixer, int mixer_idx); |
| 46 |
+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); |
| 47 |
bool process_runs(const char *path); |
| 48 |
|
| 49 |
/* socket file descriptor for general purposes */ |
b/src/print_volume.c
| 54 |
@@ -26,7 +26,7 @@ |
| 55 |
#include "i3status.h" |
| 56 |
#include "queue.h" |
| 57 |
|
| 58 |
-void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *device, const char *mixer, int mixer_idx) {
|
| 59 |
+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) {
|
| 60 |
char *outwalk = buffer; |
| 61 |
int pbval = 1; |
| 62 |
|
| 63 |
@@ -104,7 +104,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char * |
| 64 |
fprintf (stderr, "i3status: ALSA: playback_switch: %s\n", snd_strerror(err)); |
| 65 |
if (!pbval) {
|
| 66 |
START_COLOR("color_degraded");
|
| 67 |
- avg = 0; |
| 68 |
+ fmt = fmt_muted; |
| 69 |
} |
| 70 |
} |
| 71 |
|