slint icon indicating copy to clipboard operation
slint copied to clipboard

Accessibility: support for screen readers

Open tronical opened this issue 5 years ago • 16 comments

At the risk of this being a very open task, this ticket tracks the foundation of accessibility support. This is by no means everything, but it's a start.

Acceptance Criteria: It's possible to navigate the widget gallery demo using voiceover and a keyboard on at least one platform (such as macOS or Linux). This means the text of labels, etc. is read, it's possible to use the keyboard to navigate between different elements and activate them.

tronical avatar Sep 02 '20 09:09 tronical

Please consider voice over accessibility for touch screens together with this. This is not an area I have much knowledge to offer, but I want to note that keyboards are not the only way that navigating GUIs is done with screen readers.

Be-ing avatar Aug 25 '21 20:08 Be-ing

AccessKit could be helpful for this.

Be-ing avatar Aug 27 '21 06:08 Be-ing

That looks promising, I'll keep an eye on that. Thanks for the pointer!

tronical avatar Aug 27 '21 07:08 tronical

Hello, AccessKit is still young but looks promising, I'm currently trying to understand it. I would not use 60fps for any desktop project because of the lack of accessibility.

Please, could you rename the title ? Something like "Accessibility: support for screen readers".

For your information, screen readers on Windows are:

  • Narrator (included in Windows)
  • JAWs (free trial)
  • NVDA (free), easy to launch

Linux (using AT-SPI 2):

  • Orca

Apple OSX & IPhone:

  • VoiceOver

Android:

  • TalkBack

I found a useful checklist on Flutter.

jacquetc avatar Dec 23 '21 15:12 jacquetc

Done :). Thanks for the feedback and the checklist!

tronical avatar Dec 23 '21 15:12 tronical

Just to add on this, no accessibility support makes Slint a really hard sell for a GUI framework compared to something like Qt, GTK or even stock Win32. Slint is barred from running in organizations that require use of accessible software for example.

Jookia avatar Feb 11 '22 08:02 Jookia

Since someone mentioned my AccessKit project, I'll offer a quick update on it. I've got a basic Windows implementation working; the biggest limitation right now is lack of support for text editing. Also, I have a branch of Druid with AccessKit support. So now, the Slint team has something concrete to look at. I'll start working on AccessKit again in a few weeks.

mwcampbell avatar Mar 02 '22 20:03 mwcampbell

That’s excellent. Thank you for the update (and your work on AccessKit)!

tronical avatar Mar 02 '22 20:03 tronical

I noticed this is listed as “low priority”. Unfortunately, in multiple nations, inaccessible UIs in commercial products are prohibited by law, which makes this a blocker. (Source: Hacker News)

DemiMarie avatar Apr 28 '22 19:04 DemiMarie

@DemiMarie : Thanks for your comment. We have actually started to work to improve our support for accessibility, and are actually working in an accessibility branch (#1193 and #1194). But not something that can be tested yet.

ogoffart avatar Apr 28 '22 21:04 ogoffart

@DemiMarie : Thanks for your comment. We have actually started to work to improve our support for accessibility, and are actually working in an accessibility branch (#1193 and #1194). But not something that can be tested yet.

You’re welcome! I am glad that it was helpful, and even more so that you are working on accessibility support.

DemiMarie avatar Apr 28 '22 22:04 DemiMarie

@ogoffart: I hope this is not too much to ask, but could non-accessible elements cause a compiler warning?

DemiMarie avatar Aug 26 '22 06:08 DemiMarie

I like that idea a lot.

Be-ing avatar Aug 26 '22 19:08 Be-ing

Warning on all non-accessible elements seems a bit of overkill: You do not want the screen reader point out random Rectangles making up a Button! You care for the Button in its entirety and the Functionality that provides.

Maybe we could warn about non-accessible exported Elements. Those are the building blocks used elsewhere.

hunger avatar Aug 31 '22 16:08 hunger

Warning on all non-accessible elements might work okay if there's a way to explicitly opt out of the warning like clippy lints.

Be-ing avatar Aug 31 '22 19:08 Be-ing

Maybe we could warn about non-accessible exported Elements. Those are the building blocks used elsewhere.

That sounds like a great idea.

DemiMarie avatar Aug 31 '22 21:08 DemiMarie

Now that AccessKit integration is merged in egui, and the AccessKit Windows backend supports text editing (coming soon on macOS), maybe it's a good time to look at integrating AccessKit into slint. That is, unless you expect that desktop apps in production will use the Qt backend for the long term, though that complicates commercial licensing.

mwcampbell avatar Dec 04 '22 19:12 mwcampbell

What about a direct AT-SPI backend for Linux?

DemiMarie avatar Dec 06 '22 21:12 DemiMarie

That's what AccessKit is building: https://github.com/AccessKit/accesskit/issues/56

Be-ing avatar Dec 06 '22 21:12 Be-ing

AccessKit just made the first release with Unix support: https://github.com/AccessKit/accesskit/pull/198 It would be great to use it with Slint's winit backend.

Be-ing avatar Jan 05 '23 05:01 Be-ing

If there are any concerns about AccessKit's implementation, API, or support for different widget types that are blocking Slint's adoption of AccessKit, please let me know. Thanks.

mwcampbell avatar Jan 06 '23 16:01 mwcampbell

@mwcampbell Thanks for the offer :-)

hunger avatar Jan 09 '23 13:01 hunger

Beyond #2865 I'm going to file a few tickets under the accessibility label, so that we can track further improvements. My objective is to close this task when #2865 lands and incrementally work forwards.

tronical avatar Jun 13 '23 14:06 tronical