[Question] GTK3 and GTK4: How broken is Accessibility on non Linux Platforms?

Hello.
I just registered a couple Minutes ago. I hope I chose the correct Category.

Short Question is as above. More Details:
While trying to leave the Qt Framework behind, I am looking for a new GUI Framework / Toolkit. As I also want to switch to Rust: After a lof of filtering, I am currently looking at 2 Choices: wxWidgets and GTK 3 or 4.

The Information on the Web and also the GitLab Instance are a total mess. I hope someone can clarify something for me. Am I right with the following observations:

  • GTK 3.x latest Versions: Only Accessibility Support on Linux because the unmaintained, buggy and partially insecure backend has been removed for WIN32 etc. ?
  • GTK 3.x some older Version(s): Accessibility Support for Linux and WIN32 but partly broken
  • GTK 4: No Accessibility Support whatsoever? Plan to add it eventually. Maybe in 12+ Months if at all as it currently stand looking at the amount of open Issues (personal Gut Feeling here!).

EDIT01: Is there a really up2date overview what is broken in what Version somewhere?

Thanks!
Oliver

No. GTK3 has no support for accessibility API on Windows or macOS. Never had, and won’t get it in the future, as the toolkit is feature and API frozen.

GTK4 has a completely new accessibility API for widget and application developers; underneath it, it “speaks” the same protocol as GTK2, GTK3, Qt, and web browsers—i.e. AT-SPI.

There is currently no implementation for assistive technologies on non-Linux platforms, but the new API in GTK4 is designed to be portable from day 1.

2 Likes

Thanks @ebassi

What exactly does this mean “Designed to be portable from day 1”? Is this a private or public API? Only meant to be accessible from within / between the GTK Widgets etc.?

Or is it (also)?) meant for GTK Users to grab the AT-API to be able to reimplement Widgets on other Platforms with the AT-API enabled?

If there is a Link I missed to e.g. some not-too-outdated GTK4 AT-API Documentation, which has more Details, I would gladly try to wrap my head around this. Thanks :slight_smile:

P.S.: Sorry first-time Discourse User here: Need to learn how to correctly quote…

There is a public API for application and widget developers, which is used to express relations between widgets, widget states, and other properties. Application developers can use the GtkAccessible API, and can also define accessible roles, properties, states, and relations in the UI definition files parsed by GtkBuilder.

The internal implementation is private, and can have multiple backends—one of which is the AT-SPI backend, and another is a test backend we use to ensure that the accessibility support inside GTK is working correctly. A Windows or macOS backend would be implemented at that level. Again: this is a private API, so it’s not really important for application developers.

AT-SPI is Linux/Unix-only.

The GtkAccessible interface is the user-facing API for the GtkATContext backend objects, which (on Linux) provide corresponding objects on the accessibility bus, and those objects implement the AT-SPI DBus interfaces that can be consumed by assistive technologies like Orca.

I’ve linked various bits of documentation that might help you understand the design. Additionally, you may want to read an introductory article on the GTK development blog, but that’s mostly about terminology.

3 Likes

Again thank you @ebassi

It seems I have a lot of reading Material for the next weeks.

1 Like

No worries. If you have questions, feel free to ask here, or in the #gtk:gnome.org channel on Matrix.

1 Like

Hello again :slight_smile:

I am right now creating all the Scripts to get the Source Code for GTK4 / GTKMM4 plus their Dependencies etc. to be used with MinGW-w64 on MSYS2.

Question: If at all possible: Can anyone™ tell me which 3rd Library[ies] I need to enable GtkAT* Functionality on Windows? If this is not possible at all because of the missing WIN32 Implementation: Are there Alternatives?

Thanks in advance!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Thanks but I know that already.

That is why I asked if someone knows of a 3rdParty Library etc. If your quote means “No such 3rdParty Library exists” - then your answer is acceptible.

:slight_smile:

post must be at least 20 characters

1 Like

Right. Brain outage… DOH :flushed:

Sorry if my previous comment was maybe seen as rude - was not meant like that! Starting to find out how to get all the Dependencies to build plus their Dependencies etc. is more “intense” than expected.

And thanks for your time and sorry for wasting it #StaySafeAndHealthyEveryone :sun_with_face:

1 Like

Don’t worry, we all have these moments

Especially when Win32 is involved it’s often a pain to get a working setup - I wish you luck

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.