Advertisement
Guest User

Untitled

a guest
Nov 18th, 2015
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. #!/bin/sh
  2. # pulsevol.sh
  3. # PulseAudio Volume Control Script
  4. # Original 2010-05-20 - Gary Hetzel <garyhetzel@gmail.com>
  5. #
  6. # Modified 2010-10-18 by Fisslefink <fisslefink@gmail.com>
  7. # - Added support for multiple sinks and Ubuntu libnotify OSD
  8. #
  9. # Usage: pulsevol.sh [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]
  10. #
  11.  
  12. EXPECTED_ARGS=2
  13. E_BADARGS=65
  14.  
  15. if [ $# -ne $EXPECTED_ARGS ]
  16. then
  17. echo "Usage: `basename $0` [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]"
  18. exit $E_BADARGS
  19. fi
  20.  
  21. SINK=$1
  22. STEP=5
  23. MAXVOL=65537 # let's just assume this is the same all over
  24.  
  25. getperc(){
  26. VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
  27. }
  28.  
  29. getperc;
  30.  
  31. up(){
  32. VOLSTEP="$(( $VOLPERC+$STEP ))";
  33. }
  34.  
  35. down(){
  36. VOLSTEP="$(( $VOLPERC-$STEP ))";
  37. }
  38.  
  39. max(){
  40. pacmd set-sink-volume $SINK $MAXVOL > /dev/null
  41. }
  42.  
  43. min(){
  44. pacmd set-sink-volume $SINK 0 > /dev/null
  45. }
  46.  
  47. overmax(){
  48. SKIPOVERCHECK=1
  49. if [ $VOLPERC -lt 100 ]; then
  50. max;
  51. exit 0;
  52. fi
  53. up
  54. }
  55.  
  56. mute(){
  57. pacmd set-sink-mute $SINK 1 > /dev/null
  58. notify-send " " -i "notification-audio-volume-muted" -h int:value:0 -h string:synchronous:volume
  59. }
  60.  
  61. unmute(){
  62. VOLSTEP="$(( $VOLPERC-0 ))";
  63. SKIPOVERCHECK=1
  64. pacmd set-sink-mute $SINK 0 > /dev/null
  65. }
  66.  
  67. toggle(){
  68. M=`pacmd list-sinks | grep "muted" | cut -d: -f2 | tr -d "[:space:]"`
  69. if [ "$M" = "no" ]; then
  70. mute
  71. exit 0;
  72. else
  73. unmute;
  74. fi
  75. }
  76.  
  77. case $2 in
  78. up)
  79. up;;
  80. down)
  81. down;;
  82. max)
  83. max
  84. exit 0;;
  85. min)
  86. min
  87. exit 0;;
  88. overmax)
  89. overmax;;
  90. toggle)
  91. toggle;;
  92. mute)
  93. mute;
  94. exit 0;;
  95. unmute)
  96. unmute;;
  97. *)
  98. echo "Usage: `basename $0` [sink_index] [up|down|min|max|overmax|toggle|mute|unmute]"
  99. exit 1;;
  100. esac
  101.  
  102. VOLUME="$(( ($MAXVOL/100) * $VOLSTEP ))"
  103.  
  104.  
  105. if [ -z $SKIPOVERCHECK ]; then
  106. if [ $VOLUME -gt $MAXVOL ]; then
  107. VOLUME=$MAXVOL
  108. elif [ $VOLUME -lt 0 ]; then
  109. VOLUME=0
  110. fi
  111. fi
  112.  
  113.  
  114. pacmd set-sink-volume $SINK $VOLUME > /dev/null
  115.  
  116. VOLPERC=`pacmd list-sinks | grep "volume" | head -n1 | cut -d: -f3 | cut -d% -f1 | tr -d "[:space:]"`
  117.  
  118.  
  119. if [ "$VOLPERC" = "0" ]; then
  120. icon_name="notification-audio-volume-off"
  121. else
  122. if [ "$VOLPERC" -lt "33" ]; then
  123. icon_name="notification-audio-volume-low"
  124. else
  125. if [ "$VOLPERC" -lt "67" ]; then
  126. icon_name="notification-audio-volume-medium"
  127. else
  128. icon_name="notification-audio-volume-high"
  129. fi
  130. fi
  131. fi
  132.  
  133. notify-send " " -i $icon_name -h int:value:$VOLPERC -h string:synchronous:volume
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement