diff options
author | Jorge Lopez <jorginho@riseup.net> | 2015-03-05 23:58:37 +0100 |
---|---|---|
committer | Jorge Lopez <jorginho@riseup.net> | 2015-03-05 23:58:37 +0100 |
commit | 8943f9e14b5d7561c1b91e25f7e165f0760477e2 (patch) | |
tree | 053da3472ebed1236c79f5cfd28d15d08dd1e4f0 /configs/talkingparabola-X11/root-image/usr/bin/pick-a-card | |
parent | fd6ac89a55a5b67343bd40921d8a7fb2287ab867 (diff) |
TalkingParabola X11 scripts
Diffstat (limited to 'configs/talkingparabola-X11/root-image/usr/bin/pick-a-card')
-rwxr-xr-x | configs/talkingparabola-X11/root-image/usr/bin/pick-a-card | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/configs/talkingparabola-X11/root-image/usr/bin/pick-a-card b/configs/talkingparabola-X11/root-image/usr/bin/pick-a-card new file mode 100755 index 0000000..7f469e8 --- /dev/null +++ b/configs/talkingparabola-X11/root-image/usr/bin/pick-a-card @@ -0,0 +1,54 @@ +#!/bin/bash + +# If there are multiple usable sound cards, prompt the user to choose one, +# using auditory feedback. +# This script is released under the GNU General Public License. + +source /usr/share/livecd-sound/functions + +nwords() { + echo $# +} + +is_numeric() { + local str=$1 + expr match "$str" '[[:digit:]]\+$' > /dev/null 2>&1 +} + +set_default_card() { + local card=$1 + sed -e "s/%card%/$card/g" < /usr/share/livecd-sound/asound.conf.in \ + > /etc/asound.conf +} + +play_on_card() { + local card=$1 file=$2 + aplay "-Dplughw:$card,0" "$file" +} + +set -f +usable_cards="$(list_non_pcsp_cards)" +num_usable_cards=$(nwords $usable_cards) + +if [ "$num_usable_cards" -eq 1 ]; then + exit 0 +fi + +for card in $usable_cards; do + if ! is_numeric "$card"; then + continue + fi + play_on_card "$card" /usr/share/livecd-sound/sounds/pick-a-card.wav& +done +wait +sleep 1 +for card in $usable_cards; do + if ! is_numeric "$card"; then + continue + fi + play_on_card "$card" /usr/share/livecd-sound/sounds/beep.wav + if read -t 10; then + set_default_card "$card" + break + fi +done |