Files
dot.config/bin/vol
T
daniel fusser 49462fb909 initial commit
2026-06-23 00:38:32 +02:00

96 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# TODO
# - display both PCM & Master
# - display mute status
# case $1 in
# o) amixer sset PCM toggle > /dev/null ;;
# +) amixer set PCM 2dB+ unmute > /dev/null;;
# -) amixer set PCM 2dB- unmute > /dev/null;;
# # *) echo -n "`amixer get Master | sed -ne '/Front Left/s/.*\[\(.*\)%\].*/\1/p'`" ; echo -n " / `amixer get PCM | sed -ne '/Front Left/s/.*\[\(.*\)%\].*/\1/p'`" ; ( amixer get Master | grep Front | grep -q off ) && echo -n " [MUTE]" ; exit;;
# *) echo -n "`amixer get PCM | sed -ne '/Front Left/s/.*\[\(.*\)%\].*/\1/p'`" ; ( amixer get PCM | grep Front | grep -q off ) && echo -n " [MUTE]" ; exit;;
# esac
# VOLUME=`amixer get Master | sed -ne '/Front Left/s/.*\[\(.*\)%\].*/\1/p'`
# xsetroot -name "Vol: $VOLUME"
# `( amixer get Master | grep Front | grep -q off ) || echo \"$(~/sh/vol) •\"`
# SINK="`pactl info | grep -P '^Default Sink: ' | sed 's/[^:]\+:\s\+//'`"
. $HOME/.dmenurc
SINK="`pactl info | grep -P '^Standard-Ziel: ' | sed 's/[^:]\+:\s\+//'`"
[[ -z "$SINK" ]] && exit 1
if [[ "$SINK" =~ DragonFly ]]; then
INCR='24'
MIN_VOLUME=65050
MAX_VOLUME=65146
else
INCR='2%'
MIN_VOLUME=0
MAX_VOLUME=65536
fi
function volume() {
VOLUME="`pacmd dump | grep -P '^set-sink-volume.*\s+0x[1-9a-f][0-9a-f]*$'`"
echo "$VOLUME" | grep -qF "$SINK"
if [[ $? -eq 0 ]]; then
VOLUME="`echo "$VOLUME" | grep -oP '0x[1-9a-f][0-9a-f]*$'`"
printf "%d\n" "$VOLUME"
else
echo 0
fi
unset VOLUME
}
# volume
if [[ -z "$1" ]]; then
notify-send "Usage: $0 <up | down | mute | unmute | toggle>"
exit 1
fi
case "$1" in
"+")
pactl -- set-sink-volume "$SINK" "+$INCR"
VOLUME="`volume`"
if [[ $VOLUME -gt $MAX_VOLUME ]]; then
pactl -- set-sink-volume "$SINK" "$MAX_VOLUME"
fi
;;
"-")
pactl -- set-sink-volume "$SINK" "-$INCR"
VOLUME="`volume`"
if [[ $VOLUME -lt $MIN_VOLUME ]]; then
pactl -- set-sink-volume "$SINK" "$MIN_VOLUME"
fi
;;
mute)
pactl -- set-sink-mute "$SINK" 1
;;
unmute)
pactl -- set-sink-mute "$SINK" 0
;;
switch)
pactl list short sinks | awk 'BEGIN {FS=" "}; {print $2}' | $DMENU -p "Output: " -l 3 | xargs -r pactl set-default-sink
;;
toggle)
MUTED="`pacmd dump | grep -P '^set-sink-mute.*\s+yes$'`"
echo "$MUTED" | grep -qF "$SINK"
if [[ $? -eq 0 ]]; then
pactl -- set-sink-mute "$SINK" 0
else
pactl -- set-sink-mute "$SINK" 1
fi
;;
*)
notify-send "Unknown command: $1"
exit 1
;;
esac
# volume