volume 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env bash
  2. show_help() {
  3. cat<<USE
  4. USAGE:
  5. $(basename $0) [show|up|down]
  6. USE
  7. }
  8. get_state() {
  9. amixer sget Master | grep -q '\[off\]'
  10. }
  11. get_vol() {
  12. volume=$(amixer sget Master \
  13. | grep '%' \
  14. | head -1 \
  15. | sed -e 's/.*\[\([0-9]*\)%.*/\1/')
  16. if get_state; then
  17. volume=0
  18. fi
  19. }
  20. set_vol() {
  21. amixer set Master playback "$1" &> /dev/null
  22. }
  23. mute() {
  24. amixer set Master toggle &> /dev/null
  25. }
  26. show() {
  27. if command -v volnoti &> /dev/null; then
  28. if (( $1 == 0 )); then
  29. (( $quiet == 0 )) && volnoti-show -m "$1"|| exit 0
  30. else
  31. (( $quiet == 0 )) && volnoti-show "$1"|| exit 0
  32. fi
  33. else
  34. (( $quiet == 0 )) && echo "$1" || exit 0
  35. fi
  36. }
  37. main() {
  38. volume=0
  39. quiet=0
  40. while [ -n "$1" ]; do
  41. case "$1" in
  42. --help|-h)
  43. show_help
  44. exit 0
  45. ;;
  46. --quiet|-q)
  47. quiet=1
  48. ;;
  49. show)
  50. get_vol
  51. ;;
  52. up)
  53. set_vol "5%+"
  54. get_vol
  55. ;;
  56. down)
  57. set_vol "5%-"
  58. get_vol
  59. ;;
  60. mute)
  61. mute
  62. get_vol
  63. ;;
  64. *)
  65. show_help
  66. exit 0
  67. ;;
  68. esac
  69. shift
  70. done
  71. show $volume
  72. }
  73. main "$@"