#!/bin/bash # Requires amixer from the alsa-utils package mod_vol_amixer () { # Customizable configuration constants local -r DEFAULT_PRE_LOW=' ' local -r DEFAULT_PRE_HI=' ' local -r DEFAULT_PRE_MUTE=' ' local -r DEFAULT_SUF='%' local -r pre_low="${1-${DEFAULT_PRE_LOW}}" local -r pre_hi="${2-${DEFAULT_PRE_HI}}" local -r pre_mute="${3-${DEFAULT_PRE_MUTE}}" local -r suf="${4-${DEFAULT_SUF}}" local pre info stat vol info="$(amixer get Master | tail -n 1)" stat="$(sed -E 's/.*\[(.*)\]/\1/' <<< "${info}")" vol="$(sed -E 's/.*\[(.*)%\].*/\1/' <<< "${info}")" case "${stat}" in on) if [[ "${vol}" -lt 50 ]]; then pre="${pre_low}"; else pre="${pre_hi}"; fi ;; *) pre="${pre_mute}" ;; esac printf '%b%3d%b' "${pre}" "${vol}" "${suf}" }