Accessibility in Xfce Core 4.10 Roadmap
In the next release we want to improve accessibility in the core applications of Xfce. The Gtk+ toolkit already provides most of the required accessibility, but there are a lot of parts of the interface (custom widgets, buttons without label) that are hard to access with a screen reader.
This includes the following tasks:
- Test the modules with Orca and Accerciser.
- Add additional contexts and/or bindings (atk).
- Some applications need to install Orca scripts.
- Make sure mnemonics work in all the dialogs and menus (keyboard navigation).
More information about accessibility can be found in the Gnome accessibility guide.
Currently if Xfce4-session is compiled with
–enable-gnome (enable gconf) and Gnome compatibility is checked in the setting, we check the
/desktop/gnome/interface/accessibility key and if set to true, the string array in
/desktop/gnome/accessibility/startup/exec_ats is spawned (see code).
This is obviously hard to find and also not fully working since the required Gtk modules are not loaded as well (this probably was handled by gdm, but not any more?).
A11y Activation over D-Bus
There has been a proposal for a D-Bus property to synchronize the setting that says whether assistive technologies are enabled across applications and desktop environments. We already have a “Enable assistive technologies” check button in the accessibility settings dialog. All we have to do is set the
org.a11y.status.IsEnabled property on startup and update our setting whenever the this property changes. This will allow applications like Orca to enable AT support in Xfce automatically. That way blind users can just start Orca–followed by a logout/login–to activate AT, rather than having to search for the “Enable assistive technologies” check button.
The D-Bus API proposed in the mails is outdated. at-spi2-core implements the following API instead (see http://git.gnome.org/browse/at-spi2-core/tree/bus/at-spi-bus-launcher.c#n60):
<interface name='org.a11y.Status'> <property name='IsEnabled' type='b' access='readwrite'/> </interface>
Testing can be done by running Orca or Accerciser and start the application with . – option for this in the accessibility dialog.
GTK_MODULES=“gail:atk-bridge” in the environ
We need an xfce-a11y mailing list for discussion on accessibility issues. Xfce-a11y list.
Core Changes and Ideas
- Possibly provide a 2nd session desktop file to launch a session with full accessibility enabled (assignee: Nick).
Drop the gconf-depended accessibility loading, but make something that works in Xfce systems too (assignee: Nick).
- Xfce4-session starts the at-spi helpers and takes care of adding “gail:atk-bridge” to the GTK_MODULES environment variable.
- The Log out dialog needs accessibility support implemented (assignee: Jerome).
Bind xfce4-popup-applicationsmenu to Alt+F1.
- Add screen read tab in Accessibility dialog.
Add a checkbox in Accessibility dialog to enable accessibility support for the session.
- What other options do we want in the “Assesible Technologies” tab? Large pointer size? Hight contrast theme? Or option to enable a status icon with quick accessors for those actions?
- Support for keyboard navigation on the panel (bug #2411).
- The bottom panel should be accessible (somehow) by keyboard.
- Notification area
- The notification area should be accessible (somehow) by keyboard.
- Icons in the notification area lack accessibility support.
- The individual elements/icons in the notification area seem to lack associated accessible objects.
- When the menu associated with an icon appears, there is no accessible event.
- When the selection changes within one of the aforementioned menus, there is no accessible event.
- Combo boxes in the Clock dialog should derive their name from the displayed text ('16:13' not '%R')
- Applications menu:
- Should have an accessible, localized name (e.g. 'applications').
- Should have “first letter navigation” for menus in which underline is not used.
- Thunar emits no events when the selection changes in the list of icons (panel on the right hand side). It does emit events when the selection changes in the tree on the left.
- I just checked and the tree view side pane as well as the details view work. The icon and compact views, however, are custom-built widgets and don't generate selection events. They are based on
ExoIconView, which in turn is based on
GtkContainerand doesn't implement
gtk/a11y/gtkcontaineraccessible.c). So I guess we'll have to add an
ExoIconViewAccessibleclass or something similar to make this work. — Jannis Pohlmann 2011/09/08 23:11
xfrun4 seems to be completely inaccessible(will be removed in 4.10). ←- and replaced with something accessible, correct? (i.e. run dialogs are handy including for Orca users)
- When pressing Alt+Tab to switch windows, the window first appears and displays text. We get a window:create event and an object:state-changed:showing event for the window. But at that time, the window seems to lack accessible children. As a result, ATs do not seem to have anything they can present when the window first appears. (Subsequent presses of Alt+Tab are accessible and now presented by Orca via a small script which has just been committed to Orca master.)
- The accessible hierarchy is incomplete: There are no children exposed for the individual icons.
- No events are being emitted when the selection changes.
- This is due to the same reasons as the issues with Thunar's icon view. The desktop view is a custom widget that does not implement any accessibility interfaces. — Jannis Pohlmann 2011/09/08 23:17
- Impact: When an Orca user arrows amongst items on the desktop, Orca is not able to present the location moved to. Nor can Orca provide “where am I” information (e.g. total number of icons, position, etc.)
- Also, if these are custom widgets, please be sure accessibility is also implemented for when icons are being renamed.
Xfce Power Manager
- Orca does not speak the labels associated with many items in each notebook page (comboboxes, sliders, spin buttons, radio button group labels)
- EITHER manually establish the needed LABEL_FOR, LABELLED_BY AtkRelation pair between the items
- OR set the label's mnemonic widget (and use underline). As a general rule, Gtk+/Gail goodness will then set the aforementioned relationship for you automatically.
- The fact that Orca says 'page' as you arrow up and down amongst the items on the left-hand side is likely something that can, and probably should, be handled within an Orca script.
- This will work with Orca but Orca will need some custom handling appropriate for terminal presentation. (i.e. it won't work now just “out of the box” with Orca). In order to enable Orca to do this in time for the 4.10 release:
- There should be an Orca script for this app. Assignee: Joanie
- Terminal should identify itself with a more unique accessible name, like xfce4-terminal. Assignee: Nick
Xfce Power Manager
- Should work with Orca, but a custom Orca script looks like it will be needed. Assignee: Joanie
- Application Finder
- Application Menu
- All dialogs tested so far
- xfwm4 window switching (minus the first appearance)
- Mousepad text editor
Possible Candidates For Accessibility Options
(Looking at what is in place elsewhere and starting a brainstorming list)
- Contrast (i.e. theme based)
- Text size
- Mouse size and color
- Visual Alerts
Might be applicable (is any of this done by XFCE?):
- Sticky Keys
- Slow Keys
- Bounce Keys
- Mouse Keys
- Simulated Secondary Click
- Hover Click
Not applicable (cannot count on what the distro will ship):
- Screen Reader
- On screen keyboard