all repos

dotfiles @ 5374db696af5e81d8a92e2cce0163718f943b049

i use rach linux btw

dotfiles/script/volume (view raw)

1
#!/usr/bin/env bash
2
if [[ -z "$MIXER" ]] ; then
3
    MIXER="default"
4
    if command -v pulseaudio >/dev/null 2>&1 && pulseaudio --check ; then
5
        if amixer -D pulse info >/dev/null 2>&1 ; then
6
            MIXER="pulse"
7
        fi
8
    fi
9
    [ -n "$(lsmod | grep jack)" ] && MIXER="jackplug"
10
    MIXER="${2:-$MIXER}"
11
fi
12
13
if [[ -z "$SCONTROL" ]] ; then
14
    SCONTROL="${BLOCK_INSTANCE:-$(amixer -D $MIXER scontrols |
15
                      sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" |
16
                      head -n1
17
                    )}"
18
fi
19
20
if [[ -z "$STEP" ]] ; then
21
    STEP="${1:-5%}"
22
fi
23
24
NATURAL_MAPPING=${NATURAL_MAPPING:-0}
25
if [[ "$NATURAL_MAPPING" != "0" ]] ; then
26
    AMIXER_PARAMS="-M"
27
fi
28
29
capability() {
30
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL |
31
    sed -n "s/  Capabilities:.*cvolume.*/Capture/p"
32
}
33
34
volume() {
35
  amixer $AMIXER_PARAMS -D $MIXER get $SCONTROL $(capability)
36
}
37
38
format() {
39
  perl_filter='if (/.*\[(\d+%)\] (\[(-?\d+.\d+dB)\] )?\[(on|off)\]/)'
40
  perl_filter+='{CORE::say $4 eq "off" ? "M" : "'
41
  perl_filter+=$([[ $STEP = *dB ]] && echo '$3' || echo '$1')
42
  perl_filter+='"; exit}'
43
  output=$(perl -ne "$perl_filter")
44
  echo "$LABEL$output"
45
}
46
47
case $BLOCK_BUTTON in
48
  3) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) toggle          ;;
49
  4) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}+ unmute ;;
50
  5) amixer $AMIXER_PARAMS -q -D $MIXER sset $SCONTROL $(capability) ${STEP}- unmute ;;
51
esac
52
53
volume | format