Advertisement
Guest User

PulseAudio Volume Control Script

a guest
May 20th, 2010
1,201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.97 KB | None | 0 0
  1. #!/bin/sh
  2. # PulseAudio Volume Control Script
  3. #   2010-05-20 - Gary Hetzel <garyhetzel@gmail.com>
  4. #      
  5. #   BUG:    Currently doesn't get information for the specified sink,
  6. #           but rather just uses the first sink it finds in list-sinks
  7. #           Need to fix this for systems with multiple sinks
  8. #
  9.    
  10. SINK=0
  11. STEP=5
  12. MAXVOL=65537 # let's just assume this is the same all over
  13. #MAXVOL=`pacmd list-sinks | grep "volume steps" | cut -d: -f2 | tr -d "[:space:]"`
  14.  
  15. getperc(){
  16.     VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
  17. }
  18.  
  19. getperc;
  20.  
  21. up(){
  22.     VOLSTEP="$(( $VOLPERC+$STEP ))";
  23. }
  24.  
  25. down(){
  26.     VOLSTEP="$(( $VOLPERC-$STEP ))";
  27.     SKIPOVERCHECK=1
  28. }
  29.  
  30. max(){
  31.     pacmd set-sink-volume $SINK $MAXVOL > /dev/null
  32. }
  33.  
  34. min(){
  35.     pacmd set-sink-volume $SINK 0 > /dev/null
  36. }
  37.  
  38. overmax(){
  39.     SKIPOVERCHECK=1
  40.     if [ $VOLPERC -lt 100 ]; then
  41.         max;
  42.         exit 0;
  43.     fi
  44.     up
  45. }
  46.  
  47. mute(){
  48.     pacmd set-sink-mute $SINK 1 > /dev/null
  49. }
  50.  
  51. unmute(){
  52.     pacmd set-sink-mute $SINK 0 > /dev/null
  53. }
  54.  
  55. toggle(){
  56.     M=`pacmd list-sinks | grep "muted" | cut -d: -f2 | tr -d "[:space:]"`
  57.     if [ $M == "no" ]; then
  58.         mute;
  59.     else
  60.         unmute;
  61.     fi
  62. }
  63.  
  64. case $1 in
  65. up)
  66.     up;;
  67. down)
  68.     down;;
  69. max)
  70.     max
  71.     exit 0;;
  72. min)
  73.     min
  74.     exit 0;;
  75. overmax)
  76.     overmax;;
  77. toggle)
  78.     toggle
  79.     exit 0;;
  80. mute)
  81.     mute;
  82.     exit 0;;
  83. unmute)
  84.     unmute;
  85.     exit 0;;
  86. *)
  87.     echo "Usage: `basename $0` [up|down|min|max|overmax|toggle|mute|unmute]"
  88.     exit 1;;
  89. esac
  90.  
  91. VOLUME="$(( ($MAXVOL/100) * $VOLSTEP ))"
  92.  
  93. #echo "$VOLUME : $OVERMAX"
  94.  
  95. if [ -z $SKIPOVERCHECK ]; then
  96.     if [ $VOLUME -gt $MAXVOL ]; then
  97.         VOLUME=$MAXVOL
  98.     elif [ $VOLUME -lt 0 ]; then
  99.         VOLUME=0
  100.     fi
  101. fi
  102.  
  103. #echo "$VOLUME: $MAXVOL/100 * $VOLPERC+$VOLSTEP"
  104. pacmd set-sink-volume $SINK $VOLUME > /dev/null
  105. VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
  106.  
  107. #osd_cat -b percentage -P $VOLPERC --delay=1 --align=center --pos bottom --offset 50 --color=green&
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement