[Homeros] I: Не совсем молчаливый Firefox

Michael Pozhidaev msp на altlinux.ru
Вт Дек 2 10:01:47 MSK 2014


Всем привет!

Предисловия не требуются. Последовательность действий такая:

1. В ~/.bash_profile:

export GNOME_ACCESSIBILITY=1
export QT_ACCESSIBILITY=1
export GTK_MODULES=atk-bridge:gail

Эти строки вообще лучше держать всегда, если идёт работа с AT-SPI.

2. Скачиваем:

https://github.com/luwrain/guidecraft.git 

Там сначала ./gen-build, затем make в каталоге build. Само собой, нужно
поставить все зависимости от libatspi2-core и glib2. Возможно, придётся
подправить пути к заголовкам, но это технические детали. Предположим,
что всё скачалось в ~/guidecraft.

3. В ~/.xinitrc:

exec > /tmp/log.txt 2> /tmp/error.txt
/usr/libexec/at-spi2-registryd &
sleep 2
cd ~/guidecraft/
./build/guidecraft &> /tmp/guidecraft.txt &
exec firefox

4. Далее startx &> /dev/null. Если всё состыкуется, то оно будет
разговаривать. Пока очень фрагментарно и топорно, но с полной
очевидностью, что оно читает содержимое страниц. Можно попрыгать по
ссылкам или походить по тексту. Напоминаю, что Firefox переключает режим
навигации по F7, после чего надо нажать кнопку "Да", которая уже тоже
озвучивается. 

Для практического применения пока рано, но весьма полезно для
разборок. Ключевую роль играет файл правил, который лежит в git. Там
описано, какие события должны во что транслироваться. Первый столбец -
набор интерфейсов для события, второй - набор условий, третий -
цель. Набор целей к AT-SPI уже никакого отношения не имеет, он зашит в
код guidecraft'а и может свободно переправляться. Первые два поля чисто
AT-SPI-специфичные. Сейчас правил всего десять. То есть вся нынешняя
функциональность описывается только десятью действиями, но если их набор
расширять, то будут захватываться всё новые события. Есть проблема -
события могут наступать друг другу на пятки, то есть на одно и то же
действие могут приходить несколько событий. Что с этим делать, пойдём
обсуждать с Mike Gorse'ом.

В конфиге указаны две команды: команда говорить и команда молчать. Пока
примитивно, но очень работоспособно. Можно туда указать команды другого
речевого сервера. 

Ещё один момент: exec firefox - подход недостаточно изящный, поскольку
может приводить к потере команд клавиатуры, если окно не в фокусе. Для
полной надёжности, нужно взять исходники dwm-6.0, приложить к ним патч
по этой ссылке:

ftp://devel.altlinux.org/msp/tmp/dwm.patch

потом собрать и заменить firefox на путь к полученному бинарнику. После
старта иксов нужно нажать Alt+Shift+p, и запустится firefox. Но на этот
раз его окно будет прибито гвоздями, и команды не потеряются.Выходить из
dwm можно нажимая Alt+Shift+q. 

такие дела! Приглашаю разбираться и комментировать. Прошу прощения у всех,
чьи письма накопились неотвеченными - сейчас будет большой разбор почты. 

-- 
Michael Pozhidaev. Tomsk, Russia.
Russian info page: http://www.marigostra.ru/
English info page: http://www.marigostra.com/


Подробная информация о списке рассылки Homeros