From 2780dc95bea745437334a86d1b61e93c6ad8d2a6 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Fri, 9 May 2025 08:30:24 +0000 Subject: [PATCH] Fix. --- testing/copy/desktop/home/plom/.local/bin/vol | 89 ++++++++++++------- .../t490s/home/plom/.nonpath_bins/status.sh | 28 +++--- 2 files changed, 75 insertions(+), 42 deletions(-) diff --git a/testing/copy/desktop/home/plom/.local/bin/vol b/testing/copy/desktop/home/plom/.local/bin/vol index 2aba150..837988b 100755 --- a/testing/copy/desktop/home/plom/.local/bin/vol +++ b/testing/copy/desktop/home/plom/.local/bin/vol @@ -5,57 +5,86 @@ cd $(dirname "$0") . lib/audio_dev_is_mute . lib/print_usage -IDX=0 -TYPE=sink -if [ "$1" = "mic" ]; then - IDX=1 - TYPE=source - shift 1 -fi MAX_LOUDNESS=150 -FLAG_HELP_SHORT='-h' -FLAG_HELP_LONG='--help' +TARGET_IDX_SPEAKER=0 +TARGET_TYPE_SPEAKER=sink + +TARGET_IDX_MIC=1 +TARGET_TYPE_MIC=source + + + +USAGE_DESCRIPTION='Set audio device volume, or (if no LOUDNESS provided) toggle device muteness.\n\nAvailable arguments:' +USAGE_LINES='[OPTION] [LOUDNESS]' +USAGE_INDICES='_help _mic LOUDNESS' -USAGE_DESCRIPTION='Set audio device volume, or (if no LOUDNESS provided) toggle audio device muteness.\n\nAvailable arguments:' -USAGE_LINES='[mic] [COMMAND]\nLOUDNESS' -USAGE_INDICES='mic LOUDNESS _help' -USAGE_DESC_mic='if set, affect microphone rather than speakers' -USAGE_DESC_LOUDNESS='audio volume to set (as percentage, must be integer)' +ARG_HELP_SHORT='-h' +ARG_HELP_LONG='--help' USAGE_DESC__help='display this help and exit' -USAGE_NAME__help="${FLAG_HELP_SHORT}, ${FLAG_HELP_LONG}" +USAGE_NAME__help="${ARG_HELP_SHORT}, ${ARG_HELP_LONG}" -error_exit() { abort "Aborting due to $1\n\n$(print_usage)"; } +ARG_MIC_SHORT='-m' +ARG_MIC_LONG='--mic' +USAGE_DESC__mic='as device to manipulate, target microphone rather than speakers' +USAGE_NAME__mic="${ARG_MIC_SHORT}, ${ARG_MIC_LONG}" + +USAGE_DESC_LOUDNESS="volume to set (as percentage, should be integer <= ${MAX_LOUDNESS}, final '%' optional)" + + + +error_exit() { + abort "Aborting due to $1\n\n$(print_usage)" +} + +set_target_device() { + TARGET_NAME="$1" + TARGET_IDX="$2" + TARGET_TYPE="$3" +} toggle_mute() { - if $(audio_dev_is_mute "${TYPE}" "${IDX}"); then + if $(audio_dev_is_mute "${TARGET_TYPE}" "${TARGET_IDX}"); then MUTE_BOOL=0 MUTE_WORD=off else MUTE_BOOL=1 MUTE_WORD=on fi - pacmd "set-${TYPE}-mute" "${IDX}" "${MUTE_BOOL}" - echo "Toggled audio ${TYPE} muteness ${MUTE_WORD}." + pacmd "set-${TARGET_TYPE}-mute" "${TARGET_IDX}" "${MUTE_BOOL}" + echo "Toggled ${TARGET_NAME} muteness ${MUTE_WORD}." } -set_vol_percentage() { +set_volume_as_percentage() { + _PERCENTAGE=$(echo "$1" | tr -d '%') + if [ "${_PERCENTAGE}" -gt "${MAX_LOUDNESS}" ]; then + error_exit "demand for unreasonably high loudness: ${_PERCENTAGE}%." + fi AT_FULL=65536 - pacmd set-${TYPE}-volume "${IDX}" $(calc "($1 * ${AT_FULL} // 100)") - echo -n "Audio ${TYPE} volume set to ${1}%." - audio_dev_is_mute "${TYPE}" "${IDX}" && echo -n " (But audio device is muted.)" + pacmd set-${TARGET_TYPE}-volume "${TARGET_IDX}" $(calc "(${_PERCENTAGE} * ${AT_FULL} // 100)") + echo -n "Volume of ${TARGET_NAME} set to ${_PERCENTAGE}%." + audio_dev_is_mute "${TARGET_TYPE}" "${TARGET_IDX}" && echo -n " (But device is muted.)" echo } + + +set_target_device 'speaker' 0 'sink' +if [ "$(echo $1 | cut -c1)" = '-' ]; then + if [ "$1" = "${ARG_HELP_SHORT}" ] || [ "$1" = "${ARG_HELP_LONG}" ]; then + print_usage + exit 0 + elif [ "$1" = "${ARG_MIC_SHORT}" ] || [ "$1" = "${ARG_MIC_LONG}" ]; then + set_target_device 'microphone' 1 'source' + else + error_exit "unrecognized argument: $1" + fi + shift 1 +fi if [ -z "$1" ]; then toggle_mute -elif [ -z "$(echo -n $1 | sed 's/[0-9]*//g')" ]; then - if [ "$1" -gt "${MAX_LOUDNESS}" ]; then - error_exit "demand for unreasonably high loudness: $1." - fi - set_vol_percentage "$1" -elif [ "$1" = "$FLAG_HELP_SHORT" ] || [ "$1" = "$FLAG_HELP_LONG" ]; then - print_usage +elif [ -z "$(echo -n $1 | sed -E 's/[0-9]*[%]?//g')" ]; then + set_volume_as_percentage "$1" else error_exit "unrecognized argument: $1" fi diff --git a/testing/copy/t490s/home/plom/.nonpath_bins/status.sh b/testing/copy/t490s/home/plom/.nonpath_bins/status.sh index 8f057b1..950a6ba 100755 --- a/testing/copy/t490s/home/plom/.nonpath_bins/status.sh +++ b/testing/copy/t490s/home/plom/.nonpath_bins/status.sh @@ -139,16 +139,21 @@ print_datetime() { } print_volume() { - _NAME="$1" - _IDX="$2" - _TYPE="$3" - print_bar_block "$1 " '' 0 - VOLUME="$(pactl get-${_TYPE}-volume "${_IDX}" | head -1 | sed 's/ //g' | cut -d'/' -f2)" - if $(audio_dev_is_mute "${_TYPE}" "${_IDX}"); then - print_bar_block "${VOLUME}" - else - print_bar_block "${VOLUME}" "${COL_YELLOW}" - fi + _print_vol() { + _NAME="$1" + _IDX="$2" + _TYPE="$3" + _BORDER="$4" + print_bar_block "$1 " "${COL_WHITE}" 0 + VOLUME="$(pactl get-${_TYPE}-volume "${_IDX}" | head -1 | sed 's/ //g' | cut -d'/' -f2)" + if $(audio_dev_is_mute "${_TYPE}" "${_IDX}"); then + print_bar_block "${VOLUME}" '' "${_BORDER}" + else + print_bar_block "${VOLUME}" "${COL_YELLOW}" "${_BORDER}" + fi + } + _print_vol 'vol' 0 'sink' 0 + _print_vol ' --mic' 1 'source' } print_keyboard() { @@ -171,8 +176,7 @@ while true; do print_battery print_temperature print_datetime - print_volume vol 0 sink - print_volume mic 1 source + print_volume print_keyboard printf '],' sleep 0.1 -- 2.30.2