Ductor

Материал из ALT Linux Wiki

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-screen.png

Ductor Speech-ru (он же Speech Dipatcher Control Panel) - утилита упрощающая настройку Speech-dispatcher, Orca и RHVoice.

При запуске вы можете выбрать язык (ru/en) и скопировать нужный настроенный конфиг на всю систему или на пользователя.

В случае настройки на систему, программа спросит пароль админа.

После этого вы одной кнопкой можете запустить orca и так же одной кнопкой убить.

Установка

1. Подключите репозиторий Петра А.

2. Установите пакет

# apt-get install petr-task-ductor

Репозитории

Пакеты