Scripts to share
Didier Spaier
didier at slint.fr
Wed Apr 15 18:40:05 EDT 2020
Hello,
a thread mentioning speakupconf made me think that maybe the attached
scripts, shipped in Slint, could be useful to others, if not as is after
adaptations to other contexts.
speakup-save and speakup-restore allow to save/restore the speakup
settings specifically for the screen reader in use: speechd-up or
espeakup, or the hard synthesizer in use.
in Slint speakup-save is run as root by the user, speakup-restore is run
by the daemon managers of espeakup and speechd-up, which in case of a
hard synthesizer just configure speakup instead of starting a daemon at
startup.
speakup-restore is also run indirectly by speak-with, loosely similar to
talkwith but which also supports fenrir.
All these scripts are attached and I put them in the public domain, so
do what you want with them.
Bug reports are welcome.
Putting this stuff in a Git repository is in my TODO list, but not on top.
Cheers,
Didier
-------------- next part --------------
#!/bin/sh
ESPEAKUP=/usr/bin/espeakup
### Code snippet common to rc.espeakup and rc-speechd-up. ###
hardlist=$(zgrep SPEAKUP_S /proc/config.gz|grep [ym]|grep -v DUMMY| \
sed 's/CONFIG_SPEAKUP_SYNTH_//;s/..$//'|tr '[:upper:]' '[:lower:]'|sed s/soft// )
# A hardware synthesizer can be set either in the boot command line or
# in the configuration file /etc/speakup.conf. In both cases we won't
# start espeakup or speechd-up that rely on a soft synthesizer, but we
# restore the speakup settings.
if grep -q speakup /proc/cmdline; then
HARDCMDLINE=$(sed "s/.*speakup.synth=\([[:alpha:]]\{1,\}\).*/\1/" /proc/cmdline)
fi
if [ -f /etc/speakup.conf ]; then
. /etc/speakup.conf
HARDCONF=$hard
fi
# We give priority to the settings in /etc/espeakup.conf over those on
# the command line. "hard=none" in the former indicates that the user
# chose not to use a hard synthesizer. This way the user does not need
# to edit the command line to modify a setting, like using another hard
# synthesizer or use on a soft synthesizer instead of a hard one.
if [ ! "$HARDCONF" = "none" ]; then
if [ ! "$HARDCONF" = "" ]; then
# The user ran speak-with and chose a hard synth
modprobe speakup_$HARDCONF 2>/dev/null
echo $HARDCONF > /sys/accessibility/speakup/synth
[ -x /usr/sbin/speakup-restore ] && speakup-restore
exit
elif [ ! "$HARDCMDLINE" = "" ] && grep -q $HARDCMDLINE $hardlist ]; then
# The user has not run speak-with to choose a hard synth but
# has indicated one in the boot command line
modprobe speakup_$HARDCMDLINE 2>/dev/null
echo $HARDCMDLINE > /sys/accessibility/speakup/synth
[ -x /usr/sbin/speakup-restore ] && speakup-restore
exit
fi
fi
# We didn't exit yet, so we will manage the daemon of the soft synth.
# modprobe won't complain even if the driver is built-in. Else the
# "echo" command is not necessary but won't hurt.
modprobe speakup_soft 2>/dev/null
echo "soft" > /sys/accessibility/speakup/synth
sleep 1
chmod 666 /sys/accessibility/speakup/soft/*
echo 1 > /sys/accessibility/speakup/soft/direct
### End of the code snippet common to rc.espeakup and rc.speechd-up ###
if [ "$LANG" = "" ]; then
. /etc/profile.d/lang.sh
fi
# Starts/stops/restart espeakup
set_voice_from_lang () {
lang=`echo $LANG | sed 's/_.*//'`
country=`echo $LANG | sed 's/.*_//;s/\..*//;s/@.*//' | tr A-Z a-z`
if [ "$lang" = gl ]; then
# Not supported by espeak-ng yet, but pt should be fine enough, better
# than English anyway
# Comment above from Debian. We don't propose gv in Slint yet, but
# maybe later ?
lang=pt
fi
# Setup a table lang => associated voice file name
# We will start espeakup with a voice file name as argument of the
# -V option, as if we give a $lang-$country argument that does
# not match a voice file name it segfault when we switch from a
# graphical environment with Orca running to a console.
VOICESTABLE=$(espeak-ng --voices|sed "s;[ ]\{1,\};,;g"|cut -d, -f3-6|cut -d, --complement -f2-3|sed "s;,.*/;,;")
if [ ! "$(echo "$VOICESTABLE"|grep "^$lang-$country")" = "" ]; then
VOICE=$(echo "$VOICESTABLE"|grep "^${lang}-${country},"|cut -d, -f2)
elif [ ! "$(echo "$VOICESTABLE"|grep "^$lang,")" = "" ]; then
VOICE="$lang"
else
VOICE=en
fi
echo $VOICE > /tmp/voice_from_lang
}
set_voice_from_lang
VOICEFROMLANG=$(cat /tmp/voice_from_lang)
rm /tmp/voice_from_lang
set_voice_from_config () {
# We will first try to match the voice set in the config file with
# an mbrola voice. In that aim we make a table of mbrola voices file
# names with the associated mbrola voice installed.
MBROLAVOICES=$(espeak-ng --voices=mb|sed "s, ,,;s;[ ]\{1,\};,;g"|cut -d, -f5|sed s,mb/,,)
for i in $(echo "$MBROLAVOICES"|sed "s/mb-//g;s/-.*//"|sort|uniq); do
if [ "$(ls /usr/share/mbrola|grep $i)" = "" ]; then
MBROLAVOICES=$(echo "$MBROLAVOICES"|grep -v $i)
fi
done
VOICESTABLE=$(espeak-ng --voices|sed "s;[ ]\{1,\};,;g"|cut -d, -f3-6|cut -d, --complement -f2-3|sed "s;,.*/;,;")
lang=$(echo $voice|sed "s/-.*//")
if [ ! "$(echo "$MBROLAVOICES"|grep $voice)" = "" ]; then
VOICE=$voice
elif [ ! "$(echo "$VOICESTABLE"|grep "${voice},")" = "" ]; then
VOICE=$(echo "$VOICESTABLE"|grep "${voice},"|cut -d, -f2)
elif [ ! "$(echo "$VOICESTABLE"|grep "^$lang")" = "" ]; then
VOICE="$lang"
else
VOICE=en
fi
echo $VOICE > /tmp/voice_from_config
}
espeakup_start() {
[ "$LANG" = "" ] && . /etc/profile.d/lang.sh
if [ -f /etc/espeakup.conf ]; then
. /etc/espeakup.conf
if [ "$voice" = "" ]; then
voice=$VOICEFROMLANG
else
set_voice_from_config
VOICEFROMCONFIG=$(cat /tmp/voice_from_config)
rm /tmp/voice_from_config
voice=$VOICEFROMCONFIG
fi
fi
if [ ! "`ps -C espeakup --noheaders|wc -l`" = "0" ]; then
echo "espeakup is already started."
espeakup_status
exit
fi
if [ -x $ESPEAKUP ]; then
CARDS=$(mktemp)
for i in /sys/class/sound/card*; do
printf $i|sed "s/.*card//";printf " ";cat $i/id
done > $CARDS
NUMBEROFCARDS=$(find /sys/class/sound -name "card*"|wc -l)
if [ $NUMBEROFCARDS -gt 1 ]; then
echo "$NUMBEROFCARDS sound cards have been found:"
cat $CARDS
if [ "$ALSA_CARD" = "" ]; then
echo "ALSA_CARD not set in /etc/espeakup.conf, using the default."
elif ! grep -wq $ALSA_CARD $CARDS; then
echo "Card $ALSA_CARD set in /etc/espeakup not found, using the default."
ALSA_CARD=""
fi
fi
V=$(grep ^voice= /etc/espeakup.conf|sed s/voice=//)
if [ ! "$V" = "" ] && [ ! "$V" = "$voice" ]; then
echo "Voice set to $V in /etc/espeakup.conf, using $voice for espeakup."
elif [ "$V" = "" ]; then
echo "Voice not set in /etc/espeakup.conf, LANG=$LANG, using $voice for espeakup."
fi
if [ "$ALSA_CARD" = "" ]; then
echo "Starting espeakup with voice $voice"
$ESPEAKUP -V $voice
else
echo "Starting espeakup with voice $voice using sound card $ALSA_CARD"
ALSA_CARD=$ALSA_CARD $ESPEAKUP -V $voice
fi
[ -x /usr/sbin/speakup-restore ] && speakup-restore
rm $CARDS
else
echo "$ESPEAKUP not found or non executable"
fi
}
espeakup_stop() {
NBPROC="`ps -C espeakup --noheaders|wc -l`"
if [ ! "$NBPROC" = "0" ]; then
sleep 1
PID="`ps -C espeakup --noheaders -o pid`"
kill -s 9 $PID
fi
}
espeakup_restart() {
espeakup_stop
sleep 2
espeakup_start
}
espeakup_status() {
NBPROC="`ps -C espeakup --noheaders|wc -l`"
if [ "$NBPROC" = "0" ]; then
echo "espeakup is not started"
elif [ "$NBPROC" = "1" ]; then
echo "An espeakup daemon is running, PID: `ps -C espeakup --no-headers -o pid`"
else
ps -C espeakup -o pid,args
fi
}
case "$1" in
start)
espeakup_start;;
stop)
espeakup_stop;;
restart)
espeakup_restart;;
status)
espeakup_status;;
*)
echo "Usage: $0 {start|stop|restart|status}";;
esac
-------------- next part --------------
#!/bin/sh
SPEECHD=/usr/bin/speechd-up
### Code snippet common to rc.espeakup and rc-speechd-up. ###
hardlist=$(zgrep SPEAKUP_S /proc/config.gz|grep [ym]|grep -v DUMMY| \
sed 's/CONFIG_SPEAKUP_SYNTH_//;s/..$//'|tr '[:upper:]' '[:lower:]')
# A hardware synthesizer can be set either in the boot command line or
# in the configuration file /etc/speakup.conf. In both cases we won't
# start espeakup or speechd-up that rely on a soft synthsizer, but we
# restore the speakup settings.
if grep -q speakup /proc/cmdline; then
HARDCMDLINE=$(sed "s/.*speakup.synth=\([[:alpha:]]\{1,\}\).*/\1/" /proc/cmdline)
fi
if [ -f /etc/speakup.conf ]; then
. /etc/speakup.conf
HARDCONF=$hard
fi
# We give priority to the settings in /etc/espeakup.conf over those on
# the command line. "hard=none" in the former indicates that the user
# chose not to use a hard synthesizer. This way the user does not need
# to edit the command line to modify a setting, like using another hard
# synthesizer or use on a soft synthesizer instead of a hard one.
if [ ! "$HARDCONF" = "none" ]; then
if [ ! "$HARDCONF" = "" ] ; then
# The user ran speak-with and chosen a hard synth
modprobe speakup_$HARDCONF 2>/dev/null
echo $HARDCONF > /sys/accessibility/speakup/synth
[ -x /usr/sbin/speakup-restore ] && speakup-restore
exit
elif [ ! "$HARDCMDLINE" = "" ] && grep -q $HARDCMDLINE $hardlist ]; then
# The user has not run speak-with to choose a hard synth but
# has indicated one in the boot command line
modprobe speakup_$HARDCMDLINE 2>/dev/null
echo $HARDCMDLINE > /sys/accessibility/speakup/synth
[ -x /usr/sbin/speakup-restore ] && speakup-restore
exit
fi
fi
# We didn't exit yet, so we will manage the daemon of the soft synth.
# modprobe won't complain even if the driver is built-in. Else the
# "echo" command is not necessary but won't hurt.
modprobe speakup_soft 2>/dev/null
echo "soft" > /sys/accessibility/speakup/synth
sleep 1
chmod 666 /sys/accessibility/speakup/soft/*
echo 1 > /sys/accessibility/speakup/soft/direct
### End of the code snippet common to rc.espeakup and rc.speechd-up ###
# Starts/stops/restart speechd-up
speechd_up_start() {
if [ -f /etc/speechd-up.conf ]; then
. /etc/speechd-up.conf 2>/dev/null
fi
if [ ! "`ps -C speechd-up --noheaders|wc -l`" = "0" ]; then
echo "speechd-up is already started."
speechd_up_status
exit
fi
if [ -x $SPEECHD ]; then
echo "Starting speechd-up"
sleep 2
if [ ! "$ALSA_CARD" = "" ] && [ "$(echo $ALSA_CARD|sed 's/[[:digit:]]//g')" = "" ]; then
( export ALSA_CARD=$ALSA_CARD
$SPEECHD -d 1>/dev/null 2>/dev/null
)
else
$SPEECHD -d 1>/dev/null 2>/dev/null
fi
[ -x /usr/sbin/speakup-restore ] && speakup-restore
else
echo "$SPEECHD not found or non executable."
fi
}
speechd_up_stop() {
NBPROC="`ps -C speechd-up --noheaders|wc -l`"
if [ ! "$NBPROC" = "0" ]; then
echo "Stopping speechd-up..."
PID="`ps -C speechd-up --noheaders -o pid`"
kill $PID
else
echo "speechd-up is not running."
fi
}
speechd_up_restart() {
speechd_up_stop
sleep 5
speechd_up_start
}
speechd_up_status() {
NBPROC="`ps -C speechd-up --noheaders|wc -l`"
if [ "$NBPROC" = "0" ]; then
echo "speechd-up is not running"
elif [ "$NBPROC" = "1" ]; then
echo "A speechd-up daemon is running, PID: `ps -C speechd-up --no-headers -o pid`"
else
ps -C speechd-up -o pid,args
fi
}
case "$1" in
start)
speechd_up_start;;
stop)
speechd_up_stop;;
restart)
speechd_up_restart;;
status)
speechd_up_status;;
*)
echo "Usage: $0 {start|stop|restart|status}";;
esac
-------------- next part --------------
#!/bin/sh
if [ ! $(id -u) -eq 0 ]; then
echo "Please run this script as root."
exit
fi
if [ ! -f /sys/accessibility/speakup/synth ]; then
echo "speakup being not in use, there is no setting to save."
exit
elif [ "$(</sys/accessibility/speakup/synth)" = "none" ]; then
echo "speakup being not in use, there is no setting to save."
exit
fi
SYNTH=$(</sys/accessibility/speakup/synth)
ESPEAKUP=$(ps -C espeakup --noheaders|wc -l)
SPEECHD_UP=$(ps -C speechd-up --noheaders|wc -l)
# We saved settings separately for:
# espeakup
# each hard synthesizer
# speechd-up
# so that we restore the relevant settings for the synthesizer and
# screen reader in use.
SAVEDSYNTH="$SYNTH"
if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ]; then
SAVEDSYNTH="espeakup"
fi
if [ "$SYNTH" = "soft" ] && [ $SPEECHD_UP -ne 0 ]; then
SAVEDSYNTH="speechd-up"
fi
# If SYNTH has not been set to speechd-up or speakup a hard synth is
# in use, like e.g. SAVEDSYNTH=apollo
if [ ! -d /var/lib/speakup/$SAVEDSYNTH ]; then
echo "No speakup settings saved for $SAVEDSYNTH, so nothing to restore."
exit
fi
cd /var/lib/speakup/$SAVEDSYNTH
ls|while read $i; do
if [ -w /sys/accessibility/speakup/$i ] && [ -f /sys/accessibility/speakup/$i ]; then
cp $i /sys/accessibility/speakup/
fi
done
if [ -d i18n ] && [ -d /sys/accessibility/speakup/i18n ]; then
( cd i18n
ls|while read i; do
if [ -w /sys/accessibility/speakup/i18n/$i ]; then
cp $i /sys/accessibility/speakup/i18n/
fi
done
)
fi
( cd $SYNTH
ls|while read i; do
if [ -w /sys/accessibility/speakup/$SYNTH/$i ]; then
cp $i /sys/accessibility/speakup/$SYNTH/
fi
done
)
echo "speakup settings have been restored for $SAVEDSYNTH."
-------------- next part --------------
#!/bin/sh
if [ ! $(id -u) -eq 0 ]; then
gettext -s "Please run this script as root."
exit
fi
if [ ! -f /sys/accessibility/speakup/synth ]; then
"speakup being not in use, there is no setting to save."
exit
fi
SYNTH=$(</sys/accessibility/speakup/synth)
if [ "$SYNTH" = "none" ]; then
echo "speakup being not in use, there is no setting to save."
exit
fi
ESPEAKUP=$(ps -C espeakup --noheaders|wc -l)
SPEECHD_UP=$(ps -C speechd-up --noheaders|wc -l)
# We save settings separately for:
# espeakup
# each hard synthesizer
# speechd-up
# so that we restore the relevant settings for the synthesizer and
# case occurring the screen reader in use.
if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ] && [ $SPEECHD_UP -ne 0 ]; then
gettext -s "espeakup and speechd-up are both running, not saving settings."
exit
fi
if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -eq 0 ] && [ $SPEECHD_UP -eq 0 ]; then
gettext -s "neither espeakup nor speechd-up is running, not saving settings."
exit
fi
if [ "$SYNTH" = "soft" ] && [ $ESPEAKUP -ne 0 ]; then
SYNTH="espeakup"
fi
if [ "$SYNTH" = "soft" ] && [ $SPEECHD_UP -ne 0 ]; then
SYNTH="speechd-up"
fi
# If SYNTH has not been set to speechd-up or speakup it is the hard synth
# in use.
mkdir -p /var/lib/speakup/$SYNTH
cd /sys/accessibility/speakup
for i in $(find . -type d|sed "/^.$/d;s/..//"); do
mkdir -p /var/lib/speakup/$SYNTH/$i
done
for i in $(find . -type f|sed "s/..//"|grep -v -e silent -e version -e "synth.*"); do
if [ -f $i ] && [ -w $i ]; then
cp $i /var/lib/speakup/$SYNTH/$i
fi
done
gettext "Current speakup settings have been saved in "
echo "/var/lib/speakup/$SYNTH."
-------------- next part --------------
#!/bin/sh
# Didier Spaier <didier~at~slint.fr> 2019
# I wrote this script from scratch and put it in the public domain.
# I assume that the packages espeakup and speechd-up are installed.
# If fenrir is installed, it can also be used.
if [ ! $(id -u) -eq 0 ]; then
echo "Please run this script as root."
exit
fi
speakup=" a hard synthesizer (type its name, like \"apollo\" or \"acntsa\")"
if [ -x /usr/bin/espeakup ]; then
espeakup=" espeakup (Console screen reader connecting espeak-ng and speakup)\n"
n1="espeakup"
fi
if [ -x /usr/bin/speechd-up ]; then
speechd_up=" speechd-up (Console screen reader connecting Speech Dispatcher and speakup)"
n2="speechd-up"
fi
if [ -x /usr/bin/fenrir ]; then
fenrir=" fenrir (Modular, flexible and fast console screen reader)\n"
n3="fenrir"
fi
readers="$espeakup$fenrir$speechd_up"
hardlist="$(zgrep SPEAKUP_S /proc/config.gz|grep [ym]|grep -v DUMMY| \
sed 's/CONFIG_SPEAKUP_SYNTH_//;s/..$//'|tr '[:upper:]' '[:lower:]')"
usage() {
echo "Usage: $0 <screen reader> or <hard synthesizer> or none"
echo "Choose a console screen reader to talk with among:"
echo -e "$readers"
echo "or use one of the supported hard synthesizers:"
echo " "$hardlist
echo "or type \"$0 none\" to mute all screen readers."
exit
}
to_lower() {
echo "$1"|tr '[:upper:]' '[:lower:]'
}
ARGUMENT=$(to_lower $1)
if [ $# -ne 1 ]; then usage; fi
if [ ! "$ARGUMENT" = "$n1" ] && \
[ ! "$ARGUMENT" = "$n2" ] && \
[ ! "$ARGUMENT" = "$n3" ] && \
! echo $hardlist| grep -qw $ARGUMENT && \
[ ! "$ARGUMENT" = "none" ]; then
echo "$1 is not a valid argument of this command."
usage
exit
fi
# We first check which console screen reader is already running, if any.
if [ ! "$(ps -C fenrir --noheaders|wc -l)" = "0" ]; then
FENRIR=y
fi
if [ -f /sys/accessibility/speakup/synth ]; then
SPKSYNTH=$(cat /sys/accessibility/speakup/synth)
if [ "$SPKSYNTH" = "soft" ]; then
if [ ! "$(ps -C speechd-up --noheaders|wc -l)" = "0" ]; then
SPEECHDUP="y"
fi
if [ ! "$(ps -C espeakup --noheaders|wc -l)" = "0" ]; then
ESPEAKUP="y"
fi
else
HARD=$SPKSYNTH
fi
fi
# If a hard synth is in use store its name as we need to override it to
# use a soft synth instead if wished, but we need to restore it if the
# user does not want a permanent change.
if [ -f /etc/speakup.conf ]; then
. /etc/speakup.conf
fi
case $ARGUMENT in
espeakup)
if [ ! -x /usr/bin/espeakup ]; then
echo "espeakup is not installed."
exit
fi
if [ "$ESPEAKUP" = "y" ]; then
echo "$1 is already started."
exit
fi
if [ "$FENRIR" = "y" ]; then
[ -f /etc/rc.d/rc.fenrir ] && sh /etc/rc.d/rc.fenrir stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.espeakup start
sleep 1
printf "Should espeakup be also started at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 755 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
speechd-up)
if [ ! -x /usr/bin/speechd-up ]; then
echo "speechd-up is not installed."
exit
fi
if [ "$SPEECHDUP" = "y" ]; then
echo "speechd-up is already started."
exit
fi
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.speechd-up start
sleep 1
printf "Should speechd-up be also started at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
chmod 755 /etc/rc.d/rc.speechd-up
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
fenrir)
if [ ! -x /usr/bin/fenrir ]; then
echo "fenrir is not installed."
exit
fi
if [ "$FENRIR" = "y" ]; then
echo "fenrir is already started."
exit
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ ! "$SPKSYNTH" = "" ]; then
echo none > /sys/accessibility/speakup/synth
fi
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
sh /etc/rc.d/rc.fenrir start
sleep 1
clear
printf "Should fenrir be also started at boot time? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
chmod 755 /etc/rc.d/rc.fenrir
echo "Done."
elif [ ! "$hard" = "" ]; then
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo hard=$hard >> /etc/speakup.conf
fi
;;
none)
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
if [ ! "$SPKSYNTH" = "" ]; then
echo none > /sys/accessibility/speakup/synth
fi
printf "Do you also want a mute console at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.espeakup
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=none" >> /etc/speakup.conf
echo "OK"
fi
;;
*)
if [ "$FENRIR" = "y" ]; then
sh /etc/rc.d/rc.fenrir stop
fi
if [ "$ESPEAKUP" = "y" ]; then
sh /etc/rc.d/rc.espeakup stop
fi
if [ "$SPEECHDUP" = "y" ]; then
sh /etc/rc.d/rc.speechd-up stop
fi
modprobe speakup_$ARGUMENT 2>/dev/null
echo $ARGUMENT > /sys/accessibility/speakup/synth
if [ $? != 0 ]; then
echo "Unable to switch to the $ARGUMENT synthesizer."
echo "Something should be wrong."
exit 1
fi
printf "Should $ARGUMENT be also used at next boot? [Y/n] "
read ANSWER
if [ ! "$(to_lower $ANSWER)" = "n" ]; then
chmod 644 /etc/rc.d/rc.speechd-up
[ -f /etc/rc.d/rc.fenrir ] && chmod 644 /etc/rc.d/rc.fenrir
chmod 755 /etc/rc.d/rc.espeakup
echo "# File written by speak-with. Do not edit." > /etc/speakup.conf
echo "hard=$ARGUMENT" >> /etc/speakup.conf
echo "Done."
fi
esac
More information about the Speakup
mailing list