1 # Assistive Technology Service Provider Interface (AT-SPI)
3 This repository contains the [DBus][DBus] interface definitions for AT-SPI, the Assistive
4 Technology Service Provider Interface — the core of an accessibility stack for free
5 software systems. It also contains the basic daemons of the accessibility stack.
7 The version control repository and bug tracker are at https://gitlab.gnome.org/GNOME/at-spi2-core/
9 The code in this repository is not intended for application programmers. To write
10 accessible applications, look into [ATK][ATK] or your programming language's bindings for
11 the `xml` DBus interfaces mentioned below.
13 While this module started within the [GNOME][GNOME] project's umbrella, it is not used
14 only in GNOME. Other sources of relevant information about AT-SPI and Accessibility
17 * [GNOME Accessibility wiki][gnome-a11y-wiki]
18 * [KDE Accessibility wiki][kde-a11y-wiki]
19 * [Accessibility documentation for GNOME users][docs-users]
22 ## Summary of this repository's contents
24 * `xml` - DBus interfaces for accessibility, described in DBus's XML introspection format.
25 Ideally, your programming language's implementation of DBus makes use of these files to
26 generate callable bindings.
28 * `bus` - Launcher for the session's accessibility bus; see its [README.md](bus/README.md)
31 * `registryd` - Daemon that keeps track of accessible applications in the user's session,
32 and lets them talk to each other and to assistive technologies (ATs) like screen
35 * `atspi` - Hand-written binding for the `xml` DBus interface above, for use from C with
36 [GObject][GObject]. This is not normally what you would use; use a language-specific
37 binding instead. This module is for use mainly by [`at-spi2-atk`][at-spi2-atk].
39 * `dbind` - DBus utilities for use by `atspi` above. `atspi` was written before the more
40 modern C bindings like [GDBusConnection][GDBus] were available, so there is a lot of
41 hand-written IPC here.
43 * Documentation for the Gitlab [Continuous Integration pipeline](devel-docs/gitlab-ci.md).
47 Versions 1.x of AT-SPI were based on [CORBA][CORBA] for inter-process communication (IPC),
48 using GNOME's ORBit implementation thereof. During the GNOME 2 and 3 release series,
49 CORBA was phased out in favor of [DBus][DBus], a more modern IPC mechanism.
51 The original CORBA interfaces for AT-SPI were based on Java's implementation of
52 accessibility. Later, these CORBA interfaces were translated to DBus. This is why the
53 interfaces sometimes have a 1990s feeling to them.
55 The project was started with a D-Bus performance review, the results of which are available
56 on the GNOME wiki. Keep in mind that the D-Bus AT-SPI design documents on this page have
57 not been kept up to date.
59 https://wiki.gnome.org/Accessibility/Documentation/GNOME2/ATSPI2-Investigation
62 [CORBA]: https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture
63 [DBus]: https://www.freedesktop.org/wiki/Software/dbus/
64 [GObject]: https://docs.gtk.org/gobject/
65 [at-spi2-atk]: https://gitlab.gnome.org/GNOME/at-spi2-atk
66 [GDBus]: https://docs.gtk.org/gio/class.DBusConnection.html
67 [ATK]: https://gitlab.gnome.org/GNOME/atk/
68 [GNOME]: https://www.gnome.org
69 [docs-users]: https://help.gnome.org/users/gnome-help/stable/a11y.html
70 [gnome-a11y-wiki]: https://wiki.gnome.org/Accessibility
71 [kde-a11y-wiki]: https://community.kde.org/Accessibility