a11y support for unity

Registered by David Barth on 2010-10-14

This blueprint documents the requirements and work items for adding a11y support to Unity.

Blueprint information

Not started
David Barth
Canonical Desktop Experience Team
Needs approval
Luke Yelavich
Series goal:
Accepted for natty
Milestone target:


Work items (natty-alpha-1):

Work items (natty-alpha-2):
[themuso] Discuss and determine appropriate shortcut keys for jumping to the launcher and indicators: DONE
[apinheiro] atk bridge loader: DONE

Work items (natty-alpha-3):
[charlinepoirier] Discuss user testing and personas: POSTPONED
[apinheiro] atk-unity module: DONE
[apinheiro] nux atk updated: DONE
[apinheiro] launcher atk integration: DONE
[rodrigo-moya] panel atk fixes: DONE

Work items (ubuntu-11.04-beta-1):
[apinheiro] add unit tests related to atk under unity/test directory: POSTPONED
[rodrigo-moya] add unit tests related to atk under unity/test directory: POSTPONED
[themuso] Propose launcher a11y design to present list of available apps, as well as running/window open state: POSTPONED
[themuso] Discuss and draft test plan with accessibility team, to allow everyone to test key functionality once code lands: POSTPONED

Work items (ubuntu-11.04-beta-2):
[themuso] Default to classic GNOME for some a11y profiles: DONE
[apinheiro] places atk integration: POSTPONED

11/01/11 (dbarth): work items turned into milestoned bugs
27/10/10 (TheMuso): I think we need to reconsider whether we use libatk or talk directly via dbus, in light of what I have discovered about atk this evening.

It turns out that libatk works in 2 parts, communicating via a unix socket. The library side, which is normally called/linked by GTK, sends information over this socket about widgets, events/interractions. On the other side of the socket, is the atk bridge, which is loaded and runs as a GTK module, receiving the info via the socket from the toolkit, and then sending the information via CORBA/dbus, depending on what version of at-spi you are using. This atk bridge GTK module is interchangeable, depending on the stack in use, so there is a GTK module atk bridge for at-spi via CORBA, and one for DBUS.

We could copy this code, and use it ourselves, but we would have to check for dbus API updates/update this code from the at-spi2 GTK module code, whenever a dbus API change is made.

2010-10-02 (TheMuso): Its also worth noting that there are atk C++ bindings available in the atkmm package upstream. This package is not yet in Ubuntu, but it could be used for interfacing with libatk.

2011-01-04 (API): I have just uploaded a unity branch (see related branch sections) that load the atk-bridge, and it works fine. But the current AtkUtil and root object are dummy ones, doesn't expose any information from Unity. It was just a test to load the bridge (and equivalen to this bug https://bugzilla.gnome.org/show_bug.cgi?id=612599)
BTW, I would be good to refine TheMuso explanation about how ATK works. This unix socket, AFAIK, is part of the comunication protocol, and part of the underlying layers (CORBA or DBUS). ATK or its implementation itself doesn't bother about it.
I tested it using at-spi2 that export the atk-bridge location as a gsettings. It would be good to know which version will include Natty, as if in the end it uses at-spi, it would be required to ask this change also on at-spi
About the atkmm, sincerely, I don't see any advantage using them. For the moment I would work using directly atk (and BTW, the little gtk tips on unity doesn't use gtkmm either). Anyway, we can debate that and change this in the future.

2011-03-28 (pitti): Postponing the remaining items to oneiric. Too late for Natty now, we'll use the fallback to switch to classic GNOME for some a11y profiles (TheMuso)


Work Items