More work on the speech selector.
This commit is contained in:
1 parent
0df6d7b0fc
commit
4134a16ecd
5 files changed
+77
-52
No files matched your search
@@ -104,6 +104,13 @@ EndSection
|
||||
EOF
|
||||
}
|
||||
|
||||
restart_fenrir_speech() {
|
||||
if systemctl is-active --quiet fenrirscreenreader.service; then
|
||||
killall speech-dispatcher 2>/dev/null || true
|
||||
systemctl restart fenrirscreenreader.service
|
||||
fi
|
||||
}
|
||||
|
||||
set_timezone() {
|
||||
# Get the list of timezones
|
||||
mapfile -t regions < <(timedatectl --no-pager list-timezones | cut -d '/' -f1 | sort -u)
|
||||
@@ -136,8 +143,8 @@ set_timezone() {
|
||||
if read_yes_no "Would you like to switch Fenrir to laptop layout?"; then
|
||||
sed -i 's/=desktop/=laptop/' /etc/fenrirscreenreader/settings/settings.conf
|
||||
clear
|
||||
systemctl restart fenrirscreenreader.service
|
||||
fi
|
||||
restart_fenrir_speech
|
||||
|
||||
if command -v i3 > /dev/null 2>&1 && systemctl list-unit-files nodm.service > /dev/null 2>&1; then
|
||||
if read_yes_no "Will this Pi be connected to a physical screen?"; then
|
||||
|
||||
@@ -6,9 +6,11 @@ speechConfig="${STORMUX_SPEECH_CONFIG:-/etc/speech-dispatcher/speechd.conf}"
|
||||
selectionFile=""
|
||||
spdSayCommand="${STORMUX_SPD_SAY:-spd-say}"
|
||||
systemctlCommand="${STORMUX_SYSTEMCTL:-systemctl}"
|
||||
killallCommand="${STORMUX_KILLALL:-killall}"
|
||||
socatCommand="${STORMUX_SOCAT:-socat}"
|
||||
fenrirSocket="${STORMUX_FENRIR_SOCKET:-/tmp/fenrirscreenreader-daemon.sock}"
|
||||
scriptPath="$(readlink -f "$0")"
|
||||
runtimeDir="${STORMUX_RUNTIME_DIR:-/run/stormux}"
|
||||
fenrirSpeechMuted=false
|
||||
|
||||
is_safe_module() {
|
||||
[[ "$1" =~ ^[A-Za-z0-9][A-Za-z0-9_.-]*$ ]]
|
||||
@@ -149,16 +151,30 @@ announce_failure() {
|
||||
printf '%s\n' "$message" >&2
|
||||
}
|
||||
|
||||
restart_speech() {
|
||||
"${sudoCommand[@]}" "$killallCommand" speech-dispatcher
|
||||
set_fenrir_speech() {
|
||||
local enabled="$1"
|
||||
|
||||
printf 'setting set speech#enabled=%s\n' "$enabled" | \
|
||||
"$socatCommand" - UNIX-CLIENT:"$fenrirSocket" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
restart_fenrir_if_active() {
|
||||
if "$systemctlCommand" is-active --quiet fenrirscreenreader.service 2>/dev/null; then
|
||||
"${sudoCommand[@]}" "$systemctlCommand" restart fenrirscreenreader.service
|
||||
mute_fenrir_speech() {
|
||||
if "$systemctlCommand" is-active --quiet fenrirscreenreader.service 2>/dev/null && \
|
||||
set_fenrir_speech False; then
|
||||
fenrirSpeechMuted=true
|
||||
fi
|
||||
}
|
||||
|
||||
restore_fenrir_speech() {
|
||||
if [[ "$fenrirSpeechMuted" == true ]]; then
|
||||
set_fenrir_speech True || true
|
||||
fenrirSpeechMuted=false
|
||||
fi
|
||||
}
|
||||
|
||||
trap restore_fenrir_speech EXIT
|
||||
trap 'exit 130' HUP INT TERM
|
||||
|
||||
discover_modules() {
|
||||
local output line candidate
|
||||
local skippedHeading=false
|
||||
@@ -246,6 +262,7 @@ read_menu_key() {
|
||||
|
||||
declare -a modules=()
|
||||
previousModule="$(configured_module)"
|
||||
mute_fenrir_speech
|
||||
if ! discover_modules; then
|
||||
announce_failure "$previousModule"
|
||||
exit 0
|
||||
@@ -260,7 +277,7 @@ if ! selectedIndex="$(module_index "$previousModule")"; then
|
||||
fi
|
||||
|
||||
draw_menu
|
||||
"$spdSayCommand" "Speech engine selection. ${modules[$selectedIndex]} is highlighted. Use up and down to preview engines, Enter to select, or Escape to keep the current engine." >/dev/null 2>&1 || true
|
||||
"$spdSayCommand" "Use up and down arrows to select the default voice for this computer. ${modules[$selectedIndex]} is highlighted. Press Enter to select, or Escape to keep the current voice." >/dev/null 2>&1 || true
|
||||
|
||||
while true; do
|
||||
if ! keyName="$(read_menu_key)"; then
|
||||
@@ -303,19 +320,9 @@ if ! "${sudoCommand[@]}" "$scriptPath" --apply-module "$selectedModule" "$speech
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! restart_speech || ! restart_fenrir_if_active; then
|
||||
"${sudoCommand[@]}" "$scriptPath" --restore-config "$speechConfig" "$backupFile" >/dev/null 2>&1 || true
|
||||
restart_speech >/dev/null 2>&1 || true
|
||||
restart_fenrir_if_active >/dev/null 2>&1 || true
|
||||
announce_failure "$previousModule"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -n "$selectionFile" ]]; then
|
||||
if ! "${sudoCommand[@]}" "$scriptPath" --write-selection "$selectedModule" "$selectionFile"; then
|
||||
"${sudoCommand[@]}" "$scriptPath" --restore-config "$speechConfig" "$backupFile" >/dev/null 2>&1 || true
|
||||
restart_speech >/dev/null 2>&1 || true
|
||||
restart_fenrir_if_active >/dev/null 2>&1 || true
|
||||
announce_failure "$previousModule"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
Reference in new issue
Block a user