This page is for internal use by the Debian accessibility team. For user documentation on accessibility in Debian, please look at the accessibility page. For general package maintainer information on accessibility in Debian, please look at the accessibility maintainer page.

Accessibility stack internals

For graphical desktop accessibility to work, three things are needed:

The first two points, described in details below, can be checked automatically on any desktop with

$ git clone git://
$ sudo apt-get install build-essential pkg-config libdbus-1-dev libatspi2.0-dev libgtk2.0-dev libgtk-3-dev libqt4-dev qtbase5-dev 
$ cd check-a11y
$ source
$ make check

This check is also run automatically on several desktops, please see a11y Desktop status Overview. This is currently work in Progress, so please inform Simon Kainz if you have questions/ideas about this.

Accessibility bus getting started

This is provided by package at-spi2-core.

This is automatically started from /etc/xdg/autostart/at-spi-dbus-bus.desktop

On Stretch and later, it is always started, whatever desktop is used.

On Jessie and before, for gnome and Unity, it is started under condition:

gsettings get org.gnome.desktop.interface toolkit-accessibility

For MATE, this is automatically started under condition

gsettings get org.mate.interface accessibility

Others don't start it automatically, but it is getting started when running accessible GTK2, GTK3 or QT4 applications with accessibility enabled. QT5 doesn't start it automatically, but can catch up with it afterwards if accessibility is enabled in it, see below.

Toolkits loading their accessibility layer

gtk3 needs libatk-adaptor and libgail-common, no condition.

gtk2 needs libatk-adaptor and libgail-common, loaded when GTK_MODULES=gail:atk-bridge (already set by default from /etc/X11/Xsession.d/90atk-adaptor in Stretch and later) or loaded by /usr/lib/gnome-settings-daemon-3.0/gtk-modules/at-spi2-atk.desktop when gnome-settings-daemon is running and gsettings get org.gnome.desktop.interface toolkit-accessibility is true.

KDE4 needs qt-at-spi, conditionalized by QT_ACCESSIBILITY=1 (already set by default from /etc/X11/Xsession.d/90qt-a11y in Stretch and later)

KDE5 has it integrated, conditionalized by

gsettings get org.gnome.desktop.a11y.applications screen-reader-enabled

but starting from QT5.4, it can also be forced with QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1 (already set by default from /etc/X11/Xsession.d/90qt-a11y in Stretch and later)

java needs libatk-wrapper-java, conditionalized in /etc/java-*-openjdk/ :


and it can only work with the GTK look and feel, configured in

/etc/java-*-openjdk/ :

(already set by default in Stretch and later)

TODO: mono ?

screen reader getting started

gsettings get org.gnome.desktop.a11y.applications screen-reader-enabled

gconftool-2 --get /desktop/gnome/applications/at/screen_reader_enabled

xfconf-query -c xfce4-session -p StartAssistiveTechnologies

qdbus org.kde.kaccessibleapp /Adaptor speechEnabled

can be set with

qdbus org.kde.kaccessibleapp /Adaptor setSpeechEnabled true

kreadconfig5 --file kaccessrc --group ScreenReader --key Enabled

can be set with

kwriteconfig5 --file kaccessrc --group ScreenReader --key Enabled true

Notes about packaging


Testing scenarii (see explanation on

TODO Packaging


More generic details on



Accessibility archive section?