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

Easy-effects accessibility with Orca #1168

Open
devinprater opened this issue Sep 24, 2021 · 28 comments
Open

Easy-effects accessibility with Orca #1168

devinprater opened this issue Sep 24, 2021 · 28 comments

Comments

@devinprater
Copy link

Hello, I'm a blind Linux user, and am wondering if Easy-effects could be made more accessible with Orca? I have the version from Flathub, latest stable version, running on Fedora 34 with Orca version 40.0. Steps to reproduce:

  • Turn on orca by running orca from the Alt + F2 run dialog.
  • Open Personal > Assistive Technologies from your applications or system menu, or search for Assistive Technologies.
  • Check the "Enable Assistive Technologies" checkbox in that dialog, and close it, saving or applying changes if needed.
  • Open Easy-effects.
  • You'll hear a lot of "GTK MM..." "list view" stuff.
  • Arrowing down the list view shows applications.
  • Tab to try to find effects lists. You'll hear more "GTKMM..." stuff, some switches, buttons, and tabs, but nothing about effects.
  • Also, while in Easy-effects, speech is not stopped (the speech queue isn't flushed) when tabbing or doing anything else, but everywhere else it is.
    If I could help in any other way, let me know. I'd love to use this, to help make sound a little better, or use BS2B to put the sound somewhere besides right in front of me, right at my ears, for a more comfortable listening experience over 8 hours per day.
@wwmm
Copy link
Owner

wwmm commented Sep 24, 2021

Things seem a little different here on Arch Linux. It does not seem I have an "Assistive Technologies" section. What you are using is the GNOME screen reader?

@devinprater
Copy link
Author

Yes. If you're on Gnome, maybe look in the Control Center, or Control Panel.

@jbstep
Copy link

jbstep commented Sep 24, 2021

Orca is listed under Accessibility in KDE here in my Garuda system.

@vchernin
Copy link
Contributor

From what I can tell what's missing here is better integration within EasyEffects itself? Orca itself is working since it's reading things out, the issue is Orca is being told to read information which is not relevant to the user.

I think this GTK doc is relevant. From what I understand better integration with Orca is kind of similar to what adding translations feels like? Is there a tool like Poedit but for accessibility/Orca?

@devinprater
Copy link
Author

devinprater commented Sep 30, 2021 via email

@Digitalone1
Copy link
Contributor

If I have time, I can install accerciser tomorrow and see what is missing.

@Digitalone1
Copy link
Contributor

Digitalone1 commented Oct 5, 2021

Unfortunately I can't test this because I'm not able to run the speech dispatcher service.

The voice tells me there's an issue and I should check a log file under /var/log or local user directory, but there's no log related to speech-dispatcher.

When I try to start the service through systemd, it's immediately terminated. The status doesn't give me useful information:

Starting Speech-Dispatcher an high-level device independent layer for speech synthesis....
speechd: Speech Dispatcher 0.10.2 starting
speech-dispatcherd.service: Control process exited, code=exited, status=1/FAILURE
speech-dispatcherd.service: Failed with result 'exit-code'.
Failed to start Speech-Dispatcher an high-level device independent layer for speech synthesis..

Accerciser gives only information about which service is supported by the application. Not much help about how it has to be implemented.

@Digitalone1
Copy link
Contributor

@devinprater do you have any hint to resolve this issue I have with speech dispatcher? I don't have any clue how to make it work.

@devinprater
Copy link
Author

devinprater commented Oct 6, 2021 via email

@Digitalone1
Copy link
Contributor

@devinprater Ok, espeak was missing.

I can now listen and understand the issue. I hope to resolve it, but GTK documentation is not of much help since it does not give any example on how to implement a good accessible structure.

I will try to make some attempts playing with ui xml files.

@devinprater
Copy link
Author

devinprater commented Oct 6, 2021 via email

@Digitalone1
Copy link
Contributor

@devinprater I managed to find a way to remove the "GTKMM__" prefix from the voice specifying the widget title. Should be better with this fix, but it will be long to be implemented because it has to be specified for every widget.

@wwmm do you have any clue if there's a way to specify a Gtk::Accessible::Property inside the xml builder? It seems there's no specific property, so it has to be done inside the code.

I already did it for spinbuttons and scales, but if there's a way to do it in the builder, would be better?

@wwmm
Copy link
Owner

wwmm commented Oct 8, 2021

do you have any clue if there's a way to specify a Gtk::Accessible::Property inside the xml builder?

I think I saw this being done in one of the gtk examples they provide in their source. I will try to remember which one.

@wwmm
Copy link
Owner

wwmm commented Oct 8, 2021

but if there's a way to do it in the builder, would be better?

Yes. It is a lot easier to reuse interface code that is defined in a xml than the ones written in C or C++.

@wwmm
Copy link
Owner

wwmm commented Oct 8, 2021

@Digitalone1
Copy link
Contributor

I think it is like this https://gitlab.gnome.org/GNOME/gtk/-/blob/master/testsuite/gtk/ui/a11y2.ui

Nice, thanks.

@Digitalone1
Copy link
Contributor

So I made a first test. Setting the accessible label property is reducing the "GTKMM" spelling, but not all widgets are working as expected.

What works:

  • spinbuttons and scales are good: orca reproduces the label and the widget value
  • simple buttons are good
  • checkbuttons seems to work fine

What is not working

  • for toggle buttons the label is reproduced, but there's no way to inform the user if the state is checked or unchecked - I tried also to modify the property on changes, but it's not working - I don't know if it's an issue related to orca or GTK4
  • buttons that show a popover can't reproduce the label, they are presented and "GTK double button" - this should be an orca issue
  • buttons with images are not well reproduced because the voice says "GTK image" and not always the label is reproduced - maybe a workaround could be making an image object as child and make it as "presentation role" so it should be ignored

I didn't test combobox, lists and other widgets completely, but I don't think they are well reproduced. For now I just made a first test implementation for application window ui and the maximizer which is one of the easiest plugin to deal with.

This needs lots of works and at last I think it won't fully work because GTK or orca miss something. At least if we provide the right information, it's better than nothing, hoping GTK will fix issue in the future.

@devinprater Could you test the master branch? Which plugins are you using now? We can help you to find a better preset if you need.

@vchernin
Copy link
Contributor

vchernin commented Oct 9, 2021

Since they're a Flathub user I made a test build PR:
flathub/com.github.wwmm.easyeffects#31

@devinprater You can install the test build there by entering the command buildbot will give.
You can run the test build with flatpak run com.github.wwmm.easyeffects//test

@Digitalone1
Copy link
Contributor

@vchernin @wwmm has not merged it yet to master. The test is on my repository.

@vchernin
Copy link
Contributor

vchernin commented Oct 9, 2021

The test is on my repository.

The test build just takes it from your repo. It's not a problem to switch between them.

Oh, now that I reread your message I see you didn't intend for them to test your branch directly necessarily. My bad.

@devinprater
Copy link
Author

devinprater commented Oct 9, 2021 via email

@alex19EP
Copy link

alex19EP commented Oct 9, 2021

FYI @joanmarie is the orca developer, maybe she can suggest something.

@Digitalone1
Copy link
Contributor

Oh, now that I reread your message I see you didn't intend for them to test your branch directly necessarily. My bad.

For next monday @wwmm should merge it to master.

FYI @joanmarie is the orca developer, maybe she can suggest something.

Sure, any help is appreciated.

@Digitalone1
Copy link
Contributor

Made another merge request. At the moment only maximizer is working properly. Label property has been added to almost all spinboxes and scales, but plugins with comboboxes are not well handled because Orca can't reproduce them in a proper way. I'll try to improve other plugins and investigate on the other widgets in the next days.

@Digitalone1
Copy link
Contributor

The master branch has now the almost fully updated support to accessibility.

However some widgets are still not reproduced properly and I think this is a lack of GTK or orca, rather than our issue.

  • comboboxe and dropdown widgets title is well reproduced, but the internal items are reported as GTK double button while orca should just read their label
  • GTK menubutton are not reproduced, same as above, GTK double button even if we set a proper label
  • GTK togglebutton are reproduced as checkbuttons, but this is a GTK mistake in my opinion because they behave more like a switch, so when they are toggled, the voice does not report the updated state
  • I had to make information grid inside app info ui as presentation role to not reproduce it because the voice was reading the labels horizontally from left to right while the correct flow should be vertically. There's no way to change that behavior, even if we specify a different row order in accessibility properties.
  • Some other minor issues are present with tabs reported as GTKstackpage. I think GTK/orca as default should report the widget in a user friendly mode rather than "GTKMM__stuff" and waiting the developers to specify a custom label.

@vchernin if you can, the master branch could be taken for a test on Flatpak, if @devinprater wants to try it.

Anyway, we can't do more than this, almost all accessibility information by are side are provided, other issues should be fixed by GTK/orca developers in the way they are reproduced.

@devinprater
Copy link
Author

devinprater commented Oct 13, 2021 via email

@wwmm
Copy link
Owner

wwmm commented Oct 13, 2021

Will this work on ARM?

I did not try. But the first question is if PipeWire is already working on ARM.

@vchernin
Copy link
Contributor

vchernin commented Oct 13, 2021

PipeWire should work on ARM. Unfortunately at least for Debian distros PPAs like this one only offer AMD64 packages. Raspberry Pi OS is a Debian based distro so PipeWire will probably not be fun to install on there. So that means you need a distro that ships recent PipeWire out of the box.

Fedora 35 and Ubuntu 21.10 for ARM on the Pi 400 should have recent enough PipeWire out of the box (keep in mind on Ubuntu you'd need to enable PipeWire manually).

The master branch should be built here (use the most recent build): flathub/com.github.wwmm.easyeffects#31

@wwmm wwmm unpinned this issue Oct 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants