Add new script swspeak-setup v1.1.11
authorMichael Prokop <mika@grml.org>
Sun, 2 Nov 2008 23:06:40 +0000 (00:06 +0100)
committerMichael Prokop <mika@grml.org>
Sun, 2 Nov 2008 23:06:40 +0000 (00:06 +0100)
debian/changelog
doc/swspeak-setup.8.txt [new file with mode: 0644]
usr_sbin/swspeak-setup [new file with mode: 0755]

index 8678893..a0a84a9 100644 (file)
@@ -1,3 +1,10 @@
+grml-scripts (1.1.11) unstable; urgency=low
+
+  * New script swspeak-setup for activating software speak(up) features
+  * Fix typos in grml-chroot manpage.
+
+ -- Michael Prokop <mika@grml.org>  Mon, 03 Nov 2008 00:03:57 +0100
+
 grml-scripts (1.1.10) unstable; urgency=low
 
   [ Michael Gebetsroither ]
diff --git a/doc/swspeak-setup.8.txt b/doc/swspeak-setup.8.txt
new file mode 100644 (file)
index 0000000..338e6cc
--- /dev/null
@@ -0,0 +1,49 @@
+swspeak-setup(8)
+================
+Michael Prokop <mika@grml.org>
+
+NAME
+----
+swspeak-setup - script for activating software speak(up) features
+
+SYNOPSIS
+--------
+
+*swspeak-setup* [-a] [-e|-s] [-f] [-h]
+
+DESCRIPTION
+-----------
+
+*swspeak-setup* is a wrapper arround setting up the speakup kernel module
+and its according userspace software (espeakup by default if available, otherwise
+falling back to speechd-up). The script is used inside the swspeak zsh function
+of grml's zshrc.
+
+OPTIONS
+-------
+
+*-h*::
+Show summary of options.
+
+*-e*::
+Use espeakup (default, if available).
+
+*-s*::
+Use speechd-up (fallback, if available).
+
+*-a*::
+Do not execute aumix for setting mixer levels.
+
+*-f*::
+Disable flite sound output.
+
+EXAMPLES
+--------
+
+*swspeak-setup* '-a'::
+
+    Set up speakup kernel modules and start espeakup (if available) without executing aumix for setting mixer levels.
+
+AUTHOR
+------
+swspeak-setup and this manpage were written by Michael Prokop <mika@grml.org>.
diff --git a/usr_sbin/swspeak-setup b/usr_sbin/swspeak-setup
new file mode 100755 (executable)
index 0000000..db2e8d7
--- /dev/null
@@ -0,0 +1,127 @@
+#!/bin/sh
+# Filename:      swspeak-setup
+# Purpose:       script for activating software speak(up) features
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2 or any later version.
+################################################################################
+# Note: the script is used via swspeak() function in grml's zshrc so
+#       the prompt of zsh is set accordingly
+# TODO: support disabling swspeakup again?
+
+if [ -r /etc/grml/script-functions ] ; then
+   . /etc/grml/script-functions
+else
+   echo "Failed to source /etc/grml/script-functions - exiting.">&2
+   exit 1
+fi
+
+if [ -r /etc/grml/lsb-functions ] ; then
+   . /etc/grml/lsb-functions
+else
+   echo "Failed to source /etc/grml/lsb-functions - exiting.">&2
+   exit 1
+fi
+
+if [ "$1" = '-h' ] || [ "$1" == '--help' ] ; then
+   cat << EOF
+swspeak - script for activating software speak features
+
+Usage: swspeak [-a] [-e|-s] [-f] [-h]
+
+Supported options:
+
+   -e   use espeakup (default, if available)
+   -s   use speechd-up (fallback, if available)
+   -a   do not execute aumix for setting mixer levels
+   -f   disable flite sound output
+   -h   display this help text
+EOF
+   exit 0
+fi
+
+NOAUMIX=''
+[ "$1" = '-a' ] && NOAUMIX=1
+ESPEAK=''
+[ "$1" = '-e' ] && ESPEAK=1
+NOFLITE=''
+[ "$1" = '-f' ] && NOFLITE=1
+SPEECHD=''
+[ "$1" = '-s' ] && SPEECHD=1
+
+check4root || exit 1
+
+# execute flite only if it's present
+flitewrapper() {
+   if [ -x /usr/bin/flite -a -z "$NOFLITE" ] ; then
+      flite -o play -t "$*"
+   fi
+}
+
+# execute aumix
+if [ -x /usr/bin/aumix -a -z "$NOAUMIX" ] ; then
+   einfo "Setting mixer levels to 90"
+   aumix -w 90 -v 90 -p 90 -m 90
+   eend $?
+fi
+
+# check for software synthesizer support
+if ! [ -r /dev/softsynth ] ; then
+   if [ ! -d /proc/speakup/ ] && ! grep -q speakup /proc/modules ; then
+      ewarn "Kernel does not support software speakup - trying to load kernel module:" ; eend 0
+      eindent
+      einfo "Loading speakup_soft"
+      if modprobe speakup_soft ; then
+         eend 0
+      else
+         flitewrapper "Fatal error setting up software speakup"
+         eend 1
+         exit 1
+      fi
+      eoutdent
+   fi
+fi
+
+# the kernel module takes some time until it can be accessed
+sleep 1
+
+# helper functions for espeakup and speechd-up
+espeak() {
+if [ -x /usr/bin/espeakup ] ; then
+   espeakup
+   flitewrapper "Finished setting up software synthesizer"
+else
+   flitewrapper "espeakup not available, sorry."
+   return 1
+fi
+}
+
+speechd() {
+if [ -x /usr/bin/speechd-up ] ; then
+   nice -n -20 speechd-up
+   flitewrapper "Finished setting up software synthesizer"
+else
+   flitewrapper "speechd-up not available, sorry."
+   return 1
+fi
+}
+
+# finally execute the according program:
+if [ -n "$ESPEAK" ] ; then
+   espeak && exit 0 || exit 1
+fi
+
+if [ -n "$SPEECHD" ] ; then
+   speechd && exit 0 || exit 1
+fi
+
+if grep -q 'swspeak=espeak' /proc/cmdline ; then
+   ( espeak && exit 0 ) || ( speechd && exit 0 ) || exit 1
+elif grep -q 'swspeak=speechd' /proc/cmdline ; then
+   ( speechd && exit 0 ) || ( espeak && exit 0 ) || exit 1
+else
+   ( espeak && exit 0 ) || ( speechd && exit 0 ) || exit 1
+fi
+
+## END OF FILE #################################################################
+# vim: ai tw=100 expandtab foldmethod=marker shiftwidth=3