diff --git a/CHANGELOG.md b/CHANGELOG.md index bdd3c67..61037ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ ## Unreleased ### Added + +* alsa: `percentage` tag. This is an integer tag that represents the + current volume as a percentage value. + + ### Deprecated ### Removed ### Fixed diff --git a/doc/yambar-modules.5.scd b/doc/yambar-modules.5.scd index 947b57d..3a099c6 100644 --- a/doc/yambar-modules.5.scd +++ b/doc/yambar-modules.5.scd @@ -145,6 +145,9 @@ Monitors an alsa soundcard for volume and mute/unmute changes. | volume : range : Volume level, with min and max as start and end range values +| percent +: range +: Volume level, as a percentage | muted : bool : True if muted, otherwise false diff --git a/modules/alsa.c b/modules/alsa.c index b274903..6933fe5 100644 --- a/modules/alsa.c +++ b/modules/alsa.c @@ -43,13 +43,18 @@ content(struct module *mod) { struct private *m = mod->private; + int percent = m->vol_max - m->vol_min > 0 + ? 100 * m->vol_cur / (m->vol_max - m->vol_min) + : 0; + mtx_lock(&mod->lock); struct tag_set tags = { .tags = (struct tag *[]){ tag_new_int_range(mod, "volume", m->vol_cur, m->vol_min, m->vol_max), + tag_new_int_range(mod, "percent", percent, 0, 100), tag_new_bool(mod, "muted", m->muted), }, - .count = 2, + .count = 3, }; mtx_unlock(&mod->lock);