Dodany przez: Minio, 00:44 30-01-2012

Nowy Pobierz
  1. #!/bin/bash
  2. # Skrypt do kontrolowania głośności urządzenia
  3.  
  4. # Poniższe zmienne dopasuj do własnych wymagań
  5. DEFAULT_INTERVAL=5
  6. DEFAULT_MIXER=Master
  7.  
  8. VIEWER='qiv -p'
  9. IMAGE_ON="$HOME/skrypty/.glosniki/glosnik.png"
  10. IMAGE_OFF="$HOME/skrypty/.glosniki/glosnik-wyl.png"
  11. # polecenie nie zawiera argumentu opcji -P, ponieważ
  12. # zostanie on obliczony w trakcie działania skryptu i wpisany tak,
  13. # aby odpowiadał stanowi aktualnemu
  14. OSD="osd_cat -p middle -A center -b percentage -T Głośność -d 1 -f '-*-helvetica-*-r-*-*-34-*-*-*-*-*-*-*' -O 1 -c '#fff' -P"
  15.  
  16. # nie modyfikuj nic poniżej chyba że wiesz co robisz
  17.  
  18. function help_msg {
  19.         echo "$0 [rise|lower|toggle]"
  20.         echo "If you need more advanced options, use amixer."
  21. }
  22.  
  23. function get_volume {
  24.         amixer get $DEFAULT_MIXER |tail -1 |perl -pe 's:.*?\[([0-9]+)%.*:$1:gi'
  25. }
  26.  
  27. function set_state {
  28.         amixer -q set $DEFAULT_MIXER "$1"
  29. }
  30.  
  31. function display_image {
  32.         case $(amixer get $DEFAULT_MIXER |tail -1 |cut -d'[' -f 4) in
  33.                 "on]") IMAGE=$IMAGE_ON ;;
  34.                 "off]") IMAGE=$IMAGE_OFF ;;
  35.         esac
  36.        
  37.         $VIEWER $IMAGE &
  38.         local PID=$!
  39.         sleep 1
  40.         kill $PID
  41. }
  42.  
  43. # taka proteza troche utrudniająca przypadkowe zamknięcie qiv lub osd_cat
  44. # jeśli ktoś ich używa poza skryptem. Jeśli któreś z nich zostało uruchomione
  45. # na trzy sekundy lub mniej przed chwilą obecną, zamyka je.
  46. # Zapobiega to nachodzeniu obrazów lub OSD na siebie w przypadku szybkiego
  47. # wywoływania skryptu
  48. function kill_process {
  49.         pgrep "$1" | while read PID; do
  50.                 NOW=$(date +%s)
  51.                 PID_C_TIME=$(stat --printf "%Y\n" /proc/$PID)
  52.                 if [ $PID_C_TIME -gt $((NOW-3)) ]; then
  53.                         kill $PID
  54.                 fi
  55.         done
  56. }
  57.  
  58. function cleanup {
  59.         kill_process osd_cat
  60.         kill_process qiv
  61. }
  62.  
  63. if [ x$1 == 'x-h' ] || [ x$1 == 'x--help' ] || [ -z $1 ]; then
  64.         help_msg
  65.         exit 0
  66. fi
  67.  
  68. if [ ! -z "$2" ]; then
  69.         DEFAULT_INTERVAL=$2
  70. fi
  71.  
  72. case $1 in
  73.         'rise')
  74.                 cleanup
  75.                 set_state $DEFAULT_INTERVAL+
  76.                 eval $OSD $(get_volume)
  77.                 ;;
  78.         'lower')
  79.                 cleanup
  80.                 set_state $DEFAULT_INTERVAL-
  81.                 eval $OSD $(get_volume)
  82.                 ;;
  83.         'toggle')
  84.                 cleanup
  85.                 set_state toggle
  86.                 display_image
  87.                 ;;
  88.         *)
  89.                 help_msg
  90.                 exit 1
  91.                 ;;
  92. esac
  93.  

Źródło:

Ostatnie wpisy

Linki

Funkcje