Orca doesn't read non-focusable elements

I tried testing whether an app is accessible to Orca screen reader. To my surprise, Orca seems to read text in web browsers as intended but has a problem in Gtk apps.

Specifically, when a widget is not focusable like a Gtk.Label, Orca doesn’t announce it at all. Why is that? Is there some kind of setting in Orca that I’m missing for it to work in Gtk apps as it works in browsers?

You can give it a try using Amberol. Orca doesn’t announce the “Select a…” label
text despite having “label” accessibility role.

This is by design. For web apps, there’s mainly static text in some form, so you can go through all of it, but apps are mainly interactive controls, so no screen reader is reading every static text in an app window by default. There are exceptions for dialogs, where more is read, though. But generally, if the label should be read, it must be associated with some control.

1 Like

so no screen reader is reading every static text in an app window by default

Does that mean there is a way of getting Orca to read text in a plain Gtk.Label except that it’s not the default behavior?

if the label should be read, it must be associated with some control

I assume these are labels associated with text inputs, push buttons etc.

Yes, the labels are read if they’re labels for some other focusable control, and when they’re part of a focusable list item. Also, there’s a heuristic which reads the labels when they’re part of a window with the dialog role. Of course, you can force them to be focusable, but that’s what was happening by default in Gtk , and would look weird in a Gtk 4 app.

1 Like

Thank you very much. I have an app that uses labels for displaying text in a “How to” window that describes how to play a simple puzzle. I suppose giving the modal window a dialog role will suffice.

Another option is to add the contents of the label as the accessible description of the window.

1 Like