Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic Unix adapter #56

Closed
DataTriny opened this issue Nov 4, 2021 · 2 comments · Fixed by #198
Closed

Basic Unix adapter #56

DataTriny opened this issue Nov 4, 2021 · 2 comments · Fixed by #198

Comments

@DataTriny
Copy link
Member

DataTriny commented Nov 4, 2021

Unlike Chromium, we decided not to rely on ATK (the GTK accessibility layer) for our Unix adapter. Reasons include:

  • GTK 4 does not use ATK anymore, effectively deprecating it.
  • We don't want to force users of AccessKit to depend on GTK if they don't already.
  • GObject management is ugly in Rust, and event handling for ATK would also be.

Instead, we will directly implement the AT-SPI protocol ourselves, like the Qt framework did.

AT-SPI sits on top of D-BUS. To avoid repetitive D-Bus message handling, we will use the high-level zbus crate.

To avoid duplicating efforts, we will share as much code as possible with the atspi crate.

A very minimal Unix adapter should be capable of exposing a basic application (a window with two buttons for instance).

Here is the list of required features for this first version:

  • Implement most of the org.a11y.atspi.Application: GetApplicationBusAddress will probably be skipped for now.
  • Implement most methods and properties of org.a11y.atspi.Accessible: name, description, ID, role...
  • Implement hit-testing through `org.a11y.atspi.Component'.
  • Implement AT action requests support through org.a11y.atspi.Action.
  • Implement basic numeric value widget support through org.a11y.atspi.Value.
  • Include an example demonstrating a basic window (X11?).
  • Update accesskit_winit to support the new adapter.

Current progress can be tracked here.

@federicomenaquintero
Copy link

Hello, AccessKit people! I'm one of the maintainers of at-spi2-core, and I wanted to thank you for working on AccessKit!

I'm in the process of cleaning up the accessibility stack (adding CI, removing obsolete code, adding tests, documenting things, etc.). I'm glad that you are using the DBus interfaces directly instead of atk; this is the right call. If you end up writing documentation for yourselves about atspi interfaces that are not documented yet (e.g. all the XML ifaces that I haven't gone through yet), please tell me so I can include your docs! Or submit a MR at https://gitlab.gnome.org/GNOME/at-spi2-core/

Of course if you have questions about how atspi works, or how Orca actually uses it, don't hesitate to ask. I'm in the process of learning the atspi->pyatspi2->orca part of the stack (I've been working on the registry side of things so far), but I'll be glad to help.

May I also invite you to the https://matrix.to/#/#a11y:gnome.org channel where we discuss atspi in general.

@DataTriny
Copy link
Member Author

Hello @federicomenaquintero ,

Thank you so much for maintaining the AT-SPI project.

FYI we now rely on the atspi library and we'll try to share as much code as possible to avoid duplicating work. Good documentation is one of our goal. You can check it here.

I hope to have this feature merged before the end of the year.

@DataTriny DataTriny changed the title Basic Linux adapter Basic Unix adapter Dec 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants