diff options
author | zachir <zachir@librem.one> | 2021-08-04 02:44:16 -0500 |
---|---|---|
committer | zachir <zachir@librem.one> | 2021-08-04 02:44:16 -0500 |
commit | 65b9133de8371312c956ab5bc4484d033c56ebab (patch) | |
tree | 90bfb04b50552b410372874540dcee53c77fb929 | |
parent | 3729260503e7fbd9bd717ea73d48c2a3fdc6b92e (diff) |
Update volsv
-rwxr-xr-x | volsv | 71 |
1 files changed, 55 insertions, 16 deletions
@@ -1,12 +1,20 @@ #!/bin/sh -# calculate average of two integers (for ALSA) -average () { - echo "$(( $(( $1 + $2 )) / 2 ))$" -} # print error message printerror () { echo "$1 is not a recognized command or flag" } +# if sndio +sndiosv () { + case "$1" in + "up" | "-i") sndioctl output.level=+0.05 ;; + "down" | "-d") sndioctl output.level=-0.05 ;; + "toggle" | "-t") sndioctl output.mute=! ;; + "mic" | "-m") sndioctl input.mute=! ;; + "getv" | "-v") printf "%s%%" `sndioctl output.level | rev | cut -d'.' -f1 | rev | cut -c 1,2` ;; + "getm" | "-g") sndioctl output.mute | cut -d'=' -f2 | sed 's/1/[off]/;s/0/[on]/' ;; + *) printerror "$1" ;; + esac +} # if pulseaudio pulsesv () { case "$1" in @@ -21,15 +29,38 @@ pulsesv () { } # if alsa alsasv () { - case "$1" in - "up" | "-i") amixer sset Master 5%+ ;; - "down" | "-d") amixer sset Master 5%- ;; - "toggle" | "-t") amixer sset Master toggle ;; - "mic" | "-m") amixer sset Capture toggle ;; - "getv" | "-v") amixer sget Master | grep '\[[0-9]*\%\]' | cut -d' ' -f6 | sed 's/\[//;s/\]//g' ;; - "getm" | "-g") amixer sget Master | grep '\[o[fn]' | cut -d' ' -f8 | head -1 ;; - *) printerror "$1" ;; - esac + DEVICE=`pgrep -x bluealsa >/dev/null && echo -n "bluealsa"` + if [ -z "$DEVICE" ]; then + case "$1" in + "up" | "-i") amixer sset Master 5%+ ;; + "down" | "-d") amixer sset Master 5%- ;; + "toggle" | "-t") amixer sset Master toggle ;; + "mic" | "-m") amixer sset Capture toggle ;; + "getv" | "-v") amixer sget Master | grep '\[[0-9]*\%\]' | sed "s/ /\n/g" | grep '%' | sed 's/\[//;s/\]//g' ;; + "getm" | "-g") amixer sget Master | grep '\[o[fn]' | cut -d' ' -f8 | head -1 ;; + *) printerror "$1" ;; + esac + elif [ -z `amixer -D $DEVICE controls` ]; then + case "$1" in + "up" | "-i") amixer sset Master 5%+ ;; + "down" | "-d") amixer sset Master 5%- ;; + "toggle" | "-t") amixer sset Master toggle ;; + "mic" | "-m") amixer sset Capture toggle ;; + "getv" | "-v") amixer sget Master | grep '\[[0-9]*\%\]' | sed "s/ /\n/g" | grep '%' | sed 's/\[//;s/\]//g' ;; + "getm" | "-g") amixer sget Master | grep '\[o[fn]' | cut -d' ' -f8 | head -1 ;; + *) printerror "$1" ;; + esac + else + MIXER=`amixer -D $DEVICE | grep 'A2DP' | cut -d"'" -f2` + case "$1" in + "up" | "-i") amixer -D "$DEVICE" sset "$MIXER" 5%+ ;; + "down" | "-d") amixer -D "$DEVICE" sset "$MIXER" 5%- ;; + "toggle" | "-t") amixer -D "$DEVICE" sset "$MIXER" toggle ;; + "getv" | "-v") amixer -D "$DEVICE" sget "$MIXER" | grep '\[[0-9]*\%\]' | sed "s/ /\n/g" | grep '%' | sed 's/\[//;s/\]//g' | head -1;; + "getm" | "-g") amixer -D "$DEVICE" sget "$MIXER" | grep '\[o[fn]' | cut -d' ' -f9 | head -1 ;; + *) printerror "$1" ;; + esac + fi } #Search input for echo "$@" | grep -q ' *-h *' && echo \ @@ -46,7 +77,15 @@ get volume level: 'getv' or '-v' get mute state: 'getm' or '-g'" && exit for i in $@; do - pgrep -x pulseaudio >/dev/null && pulsesv $1 || alsasv $1 - pgrep -x dwmblocks >/dev/null && pkill -RTMIN+10 dwmblocks - pgrep -x dwmbar >/dev/null && dwmbar-signal volume + if pgrep -x pulseaudio >/dev/null; then + pulsesv $i + elif pgrep -x pipewire >/dev/null; then + pulsesv $i + elif pgrep -x sndiod >/dev/null; then + sndiosv $i + else + alsasv $i + fi + pgrep -x dwmblocks >/dev/null && pkill -RTMIN+13 dwmblocks + #pgrep -x dwmbar >/dev/null && dwmbar-signal volume done |