Accessibility is important for a lot of users, without it they just can not use their computer.

“15% of the world's population lives with some form of disability”

Laws require accessibility.


A few important principles are to be kept in mind

  • We want to make existing software accessible, and avoid dedicated software
  • We need synchronization: accessibility is just another way for input and output
  • It should be easily available, ready to be enabled.

See also Nonvisual Presentation of Graphical User Interfaces: Contrasting Two Approaches which discusses a lot of ground design principles.


Accessibility support is needed in Input


Accessibility support is needed in Output


Accessibility support is needed in applications, through AT-SPI2

at-spi stack overview (source)

A Walkthrough documents the RPC and function calls details.

Gnome provides an Accessibility development guide

For ATK, there is a best ATK practices guide , and a minimal example of extending a base atk implementation is the GtkScaleAccessible class, based on GtkRangeAccessible, see gtk/gtk/a11y/gtkscaleaccessible.[ch]

For adding accessibility support to a custom-made widget, the evince implementation can be used as an example.

For Qt5, there is a guide for QWidget and a guide for Qt Quick

KDE provides an Accessibility development guide , and a Plasma Accessibility documentation

Plans for wayland

LinuxJournal proposes a HOW-TO


There are so many accessibility mailing lists, notably for each distribution:

and for each toolkit or desktop:

and for each screen reader:

and cross-software lists:

If something is missing on these pages, don't hesitate to mail (or better, get a freedesktop wiki account to do additions yourself)