NoPaste

ecasound starten die dritte

von smutbert

Dein Code:
  1. #!/bin/bash
  2.  
  3. BT_MAC[1]="88:00:00:00:31:F0"
  4. BT_MAC[2]="12:51:02:20:0F:E8"
  5. INTERVAL=10
  6. BUFFER=4096
  7.          
  8. # Funktion zum Starten von ecasound mit einem Argument
  9. # 0 -> Ausgabe über die eingebauten Lautsprecher
  10. # 1 -> Ausgabe über plugbtL1
  11. # 2 -> Ausgabe über plugbtL2
  12. # 3 -> Ausgabe über plugbtL1 und plugbtL2
  13. start_ecasound() {
  14.         if test "${1}" = 0 ; then
  15.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsaplugin,0 &> /dev/null &
  16.         elif test "${1}" = 1 ; then
  17.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsa,plugbtL1 &> /dev/null &
  18.         elif test "${1}" = 2 ; then
  19.                 ecasound -b:${BUFFER} -i alsaplugin,1,1 -o alsa,plugbtL2 &> /dev/null &
  20.         elif test "${1}" = 3 ; then
  21.                 ecasound -b:${BUFFER} -a:1,2 -i alsaplugin,1,1 -a:1 -o alsa,plugbtL1 -a:2 -o alsa,plugbtL2 &> /dev/null &
  22.         fi
  23.         echo ${!}
  24. }
  25.  
  26. # Funktion, die prüft welche Bluetoothgeräte verbunden sind
  27. # 0: keines
  28. # 1: plugbtL1
  29. # 2: plugbtL2
  30. # 3: plugbtL1 und plugbtL2
  31. check_device() {
  32.         bt_count=0
  33.         for i in ${!BT_MAC[@]} ; do
  34.                 bluetoothctl info "${BT_MAC[${i}]}" | grep "Connected: yes$" &> /dev/null && bt_count=$((${bt_count}+${i}))
  35.         done
  36.         echo ${bt_count}
  37. }
  38.  
  39. # Hauptteil
  40. # die Variable running speichert, welcher ecasound-Befehl gerade läuft, -1 bedeutet keiner,
  41. # der Rest stimmt mit den Argumenten von von start_ecasound() überein
  42. running=-1
  43. while true ; do
  44.         connected=$(check_device)
  45.         if test ${running} -eq ${connected}; then
  46.                 pgrep "ecasound" | grep ${pid} &> /dev/null || running=-1
  47.         elif test ${running} -ne -1 ; then
  48.                 pgrep "ecasound" | grep ${pid} &> /dev/null && kill ${pid}
  49.                 running=-1
  50.         fi
  51.         if test ${running} -ne ${connected} ; then
  52.                 pid=$(start_ecasound ${connected}) && running=${connected}
  53.         fi
  54.         sleep ${INTERVAL}
  55. done

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. Alternativ kannst du den gesamten Eintrag auch als Datei herunterladen.