Ductor
Ductor - программа вдохновленная LUWRAIN.
Представляет собой модульную консольную программу-меню все элементы которой считываются с помощью speech-dispatcher.
Модули помогают незрячим пользователям получать информацию/выполнять определнные действия.
Программа автоматически считывает их из данного каталога и добавляет пункты в меню.
Название
Слово ductor (от латинского глагола duco — вести, направлять) переводится с латыни как «вождь», «лидер», «проводник» или «командир». Так же может переводится как «поводырь».
В контексте программы для незрячих, с одной стороны, это программа, облегчающая "путь в мир ПК", "проводник", с другой программа выполняющая функции собаки-поводыря, что так же "подходит" под это латинское слово.
Интеграция с Speech-dispatcher + RHVoice
Для озвучки программа использует речевой сервер speech-dispatcher (spd-say) + русский речевой движок RHVoice.
В рамках проекта, в качестве его компонента в него был перенесена утилита speech-ru.
Компоненты
Программа состоит из трех компонентов:
- ductor
- ductor-base
- ductor-modules
- ductor-speech-ru
ductor
├── configs │ └── pulse-daemon.conf ├── ductor ├── ductor-modules │ ├── menu │ │ ├── info │ │ └── module │ └── menu_items │ ├── devices │ │ ├── info │ │ └── module │ ├── games │ │ ├── info │ │ └── module │ ├── information │ │ ├── info │ │ └── module │ ├── network │ │ ├── info │ │ └── module │ ├── office │ │ ├── info │ │ └── module │ ├── standart │ │ ├── info │ │ └── module │ └── system │ ├── info │ └── module ├── ductor.spec └── envs ├── itemsifexists.env ├── pkill.env ├── pulseconf.env ├── speak_char.env ├── speak_pluslong.env ├── speak_wait_bak.env └── speech.env
Файлы:
- ductor - исполняемый скрипт
- ductor-modules - модули ductor + модули определяющие пункты меню
- envs - подключаемые модули
скрипт ductor
- определяет каталог с модулями
- подключает с помощью source модули из envs
- автоматически загружает модули из подпапок и добавляет их в меню
- т.е. добавите модуль в папку - он появится в списке, удалите - исчезнет
- отображает пункты меню и пункт выхода
- считывает клавиши, обрабатывает нажатие, озвучивает пункты, при выходе их пункта возвращается обратно
Подключаемые модули
- itemsifexists.env - загружает модули в меню и отображает их
- pkill.env - подключение этого модуля позволят при нажатии Ctrl+C завершить процесс
- pulseconf.env - указывает путь к конфигу Pulse, который позволяет работать звуку без Xorg
- speak_char.env - определяет функции speak_char (озвучивает символы) и speak_char_background (озвучивает символы в фоне)
- speak_pluslong.env - определяет функции speak (читает текст) и speak_long (читает текст с более длинным временем).
- speak_wait_bak.env - определяет функции speak_and_wait (читает текст и ждет окончания) и speak_background (читает текст в фоне).
- speech.env - определяет команду для чтения текста (spd-say) и включение (true/false)
ductor-base
├── org.ductor-base.policy ├── setup-ductor-base-en.sh ├── setup-ductor-base.sh ├── speech-dispatcher.service └── systemconfigs ├── rhvoice.conf ├── RHVoice.conf └── speechd.conf
Данный пакет включает:
- скрипты настройки RHVoice и speech-dispatcher
- настроенный файл службы
- настроенные файлы конфигов
ductor-modules
Данный пакет включает модули.
Располагаются в тех же папках что и модули пунктов меню.
Состоят из файлов info и module.
Файл info - текстовый файл без расширения, содержащий:
NAME=Устройства MODULE=module
- NAME - произвольное название.
- MODULE - исполняемый скрипт. В теории вы можете вместо module назвать файл любым именем, положить его рядом и прописать в файл info.
module - sh-скрипт без расширения:
#!/bin/bash <...>
└── ductor-modules ├── devices │ ├── brltty │ │ ├── info │ │ └── module │ ├── mymem │ │ ├── info │ │ └── module │ └── trim │ ├── info │ └── module ├── games │ ├── cows │ │ ├── info │ │ └── module │ ├── guess │ │ ├── info │ │ └── module │ └── pairs │ ├── info │ └── module ├── information │ ├── aboutos │ │ ├── info │ │ └── module │ ├── computername │ │ ├── info │ │ └── module │ ├── freespace │ │ ├── info │ │ └── module │ └── myenv │ ├── info │ └── module ├── network │ ├── etcnet │ │ ├── info │ │ └── module │ ├── ip │ │ ├── info │ │ └── module │ ├── netint │ │ ├── info │ │ └── module │ ├── nm │ │ ├── info │ │ └── module │ ├── wificonnect │ │ ├── info │ │ └── module │ ├── wifioff │ │ ├── info │ │ └── module │ └── wifion │ ├── info │ └── module ├── office │ └── tesseract │ ├── info │ └── module ├── standart │ └── calc │ ├── info │ └── module └── system ├── poweroff │ ├── info │ └── module ├── reboot │ ├── info │ └── module └── system-sound ├── info └── module
Пример модуля
Обратите внимания на следующие команды:
- #!/usr/bin/env bash - указывает использование bash
- clear - очищает экран
- подключаем модули
for env_file in /etc/ductor-modules/envs/{speech.env,pkill.env,speak_wait_bak.env}; do
source "$env_file"
done
- озвучиваем текст
speak_and_wait "Brltty должен быть запущен!"
#!/usr/bin/env bash
clear
#Импорт SPEECH_CMD и USE_SPEECH
for env_file in /etc/ductor-modules/envs/{speech.env,pkill.env,speak_wait_bak.env}; do
source "$env_file"
done
pgrep brltty && killall brltty
if [[ "$EUID" == 0 ]] ; then
echo "Installing brltty drivers..."
apt-get install brltty brltty-xw brltty-at-spi2 brltty-speech-dispatcher
echo "Update /etc/brltty.conf..."
cat <<EOF > /etc/brltty.conf
braille-driver bm
braille-device serial:$(dmesg | grep converter | awk '{print $NF}' | tail -n1)
text-table ru
braille-parameters bm:Protocol=pb
EOF
else
if command -v brltty
then brltty -x a2 -s no --verbose
speak_and_wait "Brltty должен быть запущен!"
else echo "brltty not found, run $0 from root."
speak_and_wait "Brltty не найден на этом компьютере!"
fi
fi
speech-ru
Ductor Speech-ru (он же Speech Dipatcher Control Panel) - утилита упрощающая настройку Speech-dispatcher, Orca и RHVoice.
При запуске вы можете выбрать язык (ru/en) и скопировать нужный настроенный конфиг на всю систему или на пользователя.
В случае настройки на систему, программа спросит пароль админа.
После этого вы одной кнопкой можете запустить orca и так же одной кнопкой убить.
Установка
1. Подключите репозиторий Петра А.
2. Установите пакет
# apt-get install petr-task-ductor
Репозитории
- https://altlinux.space/petr-akhlamov/ductor
- https://altlinux.space/petr-akhlamov/ductor-modules
- https://altlinux.space/petr-akhlamov/ductor-base
- https://altlinux.space/petr-akhlamov/ductor-speech-ru
