#!/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 " 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