From b3a90e4c9246095635fb163c32750d4970846857 Mon Sep 17 00:00:00 2001 From: Michael Prokop Date: Mon, 3 Nov 2008 00:06:40 +0100 Subject: [PATCH] Add new script swspeak-setup --- debian/changelog | 7 +++ doc/swspeak-setup.8.txt | 49 +++++++++++++++++++ usr_sbin/swspeak-setup | 127 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 doc/swspeak-setup.8.txt create mode 100755 usr_sbin/swspeak-setup diff --git a/debian/changelog b/debian/changelog index 8678893..a0a84a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 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 index 0000000..338e6cc --- /dev/null +++ b/doc/swspeak-setup.8.txt @@ -0,0 +1,49 @@ +swspeak-setup(8) +================ +Michael Prokop + +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 . diff --git a/usr_sbin/swspeak-setup b/usr_sbin/swspeak-setup new file mode 100755 index 0000000..db2e8d7 --- /dev/null +++ b/usr_sbin/swspeak-setup @@ -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 +# 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 -- 2.1.4