summaryrefslogtreecommitdiff
path: root/configs/talkingparabola/root-image/usr/bin/pick-a-card
diff options
context:
space:
mode:
authorJorge Lopez <jorginho@riseup.net>2014-12-04 21:46:10 +0100
committerJorge Lopez <jorginho@riseup.net>2014-12-04 21:46:10 +0100
commit1128eaad3ff68be9e156488fe6cc9c4eadcc4c01 (patch)
tree53024aec8c7e473201c40e01ba16519c8dd16a0e /configs/talkingparabola/root-image/usr/bin/pick-a-card
parentcdb7aa1413132df18c92b96d0d93dd4e12daa761 (diff)
Add TalkingParabola and edit in live X11 the design
Diffstat (limited to 'configs/talkingparabola/root-image/usr/bin/pick-a-card')
-rwxr-xr-xconfigs/talkingparabola/root-image/usr/bin/pick-a-card54
1 files changed, 54 insertions, 0 deletions
diff --git a/configs/talkingparabola/root-image/usr/bin/pick-a-card b/configs/talkingparabola/root-image/usr/bin/pick-a-card
new file mode 100755
index 0000000..7f469e8
--- /dev/null
+++ b/configs/talkingparabola/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