From 36f56dcdccdf986dd9ddf090a5ae16165b3b23e0 Mon Sep 17 00:00:00 2001 From: sewn Date: Sat, 12 Oct 2024 18:58:05 +0300 Subject: [PATCH] volume: add mute support for ALSA --- components/volume.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/components/volume.c b/components/volume.c index 15c5a39..eb56c47 100644 --- a/components/volume.c +++ b/components/volume.c @@ -193,7 +193,7 @@ snd_mixer_selem_id_t *mixid = NULL; snd_mixer_elem_t *elem = NULL; long min = 0, max = 0, volume = -1; - int err; + int err, sw1, sw2; if ((err = snd_mixer_open(&mixer, 0))) { warn("snd_mixer_open: %d", err); @@ -229,13 +229,20 @@ if ((err = snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &volume))) { warn("snd_mixer_selem_get_playback_volume(): %d", err); } + if ((err = snd_mixer_selem_get_playback_switch(elem, 0, &sw1))) { + warn("snd_mixer_selem_get_playback_switch(): %d", err); + } + if ((err = snd_mixer_selem_get_playback_switch(elem, 1, &sw2))) { + warn("snd_mixer_selem_get_playback_switch(): %d", err); + } cleanup: snd_mixer_free(mixer); snd_mixer_detach(mixer, devname); snd_mixer_close(mixer); - return volume == -1 ? NULL : bprintf("%.0f", (volume-min)*100./(max-min)); + return volume == -1 ? NULL : bprintf("%s%.0f", + !(sw1 || sw2) ? "muted " : "", (volume-min)*100./(max-min)); } #else #include -- 2.46.2