emilk / egui

egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
https://www.egui.rs/
Apache License 2.0
20.66k stars 1.5k forks source link

egui access_kit API docs #4396

Open molenick opened 2 months ago

molenick commented 2 months ago

Is your feature request related to a problem? Please describe. Is there documentation on how to use access_kit as a ui developer using egui? I looked through both egui and access kit docs and don't see documentation for developers on how to develop accessible apps. I've read a bit of the source code I thought might be relevant but haven't had much luck yet.

From what I can tell enabling access_kit mostly just "works" (about as good as an iOS app using VoiceOver which is pretty impressive), but it wasn't apparent that would be the case until I set everything up and ran VoiceOver with my app.

Describe the solution you'd like I'd like to see documentation explaining to ui-developers using egui:

In addition to ui-developer docs, I'm also interested to know if the accessibility tree can be accessed at runtime in order to read things like "label_a has text 'wowow'". I'm interested in the possibility of using access kit as a way to drive out ui tests for egui.

Describe alternatives you've considered Reading source code until I understand the capabilities, which I have greater risk misunderstanding without docs

Additional context Thanks for the great library! :)

molenick commented 2 months ago

I originally asked the access_kit contributers, that conversation led me back here. I'm happy to help write documentation in my spare time, but would need some help getting oriented so I can learn the underlying systems well enough to document.

I know a bit about what's going on under the hood, but not well enough to write useful docs. As far as I can tell, the integration is tightly coupled to egui, access_kit and winit. My high-level understanding of things is that an egui app has an accessibility tree that gets updated and published to an access_kit adapter, which makes this information available to native accessibility apps like VoiceOver.