Accessibility

GDM supports "Accessible Login", allowing users to log into their desktop session even if they cannot easily use the screen, mouse, or keyboard in the usual way. Accessible Technology (AT) programs such as GOK (on-screen keyboard) and orca (magnifier and text-to-speech) are supported. The "GTK+ Greeter" best supports accessibility, so it is recommended for accessibility support. The "Themed Greeter" supports some accessibility features and may be usable by some users. But some AT programs, such as GOK, do not yet work with the "Themed Greeter".

Accessibility is enabled by specifying the "GTK+ Greeter" in the "Local" tab for the console display and specifying the "GTK+ Greeter" in the "Remote" tab for remote displays. Or you can modify the Greeter and RemoteGreeter configuration options by hand to be /usr/lib/gdmlogin.

The GDM greeter programs support the ability to launch AT's at login time via configurable "gestures". These gestures can be defined to be standard keyboard hotkeys, switch device event, or mouse motion events. When using the "GTK+ Greeter", the user may also change the visual appearance of the login UI. For example, to use a higher-contrast color scheme for better visibility.

Note that gdmsetup does not yet work with accessibility, so that users who require AT programs should only configure GDM by editing the ASCII files directly.

Accessibility Configuration

In order to enable Accessible Login, the system administrator must make some changes to the default login configuration by manually modifying three human-readable configuration files, stored in the GDM Custom Configuration File, AccessKeyMouseEvents File, and AccessDwellMouseEvents File. The AccessKeyMouseEvents and AccessDwellMouseEvents contain reasonable default gestures for launching GOK and orca, but some users may require these gestures to be configured to best meet their needs. For example, shorter or longer duration for holding down a button or hotkey might make the login experience more usable for some users. Also, additional AT programs may be added to the configuration file if needed.

Accessibile Theming

If using the "GTK+ Greeter" users can easily switch the color and contrast scheme of the dialog. To do this, ensure the AllowGtkThemeChange parameter in the GDM configuration is set to "true". This should be the default value. When true, the "Standard Greeter" contains a menu allowing the user to change to a different GTK+ theme. The GtkThemesToAllow configuration choice can also be used to limit the choices available as desired. For example:

GtkThemesToAllow=HighContrast,HighContrastInverse

If using the "Themed Greeter" there may be suitable GDM themes available that provide needed color and contrast schemes, but these are not yet shipped with the GDM program. Some distributions may ship such themes. There is not yet any mechanism to switch between themes in the "Themed Greeter", so if an accessible theme is required by one user, then all users would need to use the same theme.

AT Program Support

To enable user to launch AT such as the GOK or orca, the AddGtkModules parameter in the GDM configuration must be set to "true". Also the GtkModulesList parameter must be uncommented and set as follows:

GtkModulesList=gail:atk-bridge:/usr/lib/gtk-2.0/modules/libdwellmouselistener:/usr/lib/gtk-2.0/modules/libkeymouselistener

This causes all GDM GUI programs to be run with the appropriate GTK modules for launching AT programs. The use of assistive technologies and the atk-bridge module requires the registry daemon, at-spi-registryd, to be running. This is handled by the GDM GUI starting with version 2.17.

System administrators may wish to load only the minimum subset of these modules which is required to support their user base. The "libkeymouselistener" provides hotkey and switch gesture support while the "libdwellmouselistener" provides mouse motion gesture support. If your user base only requires one or the other, it is only necessary to include the gesture listener that is needed. Also, some AT programs may not require gail or atk-bridge. If you find the AT programs you need works fine without including these, then they may be omitted. Note that some AT programs work with a reduced feature set if gail and/or atk-bridge are not present. However, for general accessibility use, including all four is suitable.

Once "keymouselistener" and/or "dwellmouselistener" have been added to the AddGtkModules loaded by GDM, then you may need to modiify the gesture configurations to meet your user's needs. Default gestures are provided for launching GOK and orca, but it is recommended to modify these gestures so they work best for your user base. These gesture associations are contained in files AccessKeyMouseEvents and AccessDwellMouseEvents, respectively. Both files are located in the <etc>/gdm/modules directory. The gesture configuration format is described in the comment section of the two configuration files.

The AccessKeyMouseEvents file controls the keymouselistener Gesture Listener and is used to define key-press, mouse button, or XInput device sequences that can be used to launch applications needed for accessibility. In order to reduce the likelihood of unintentional launch, these "gestures" may be associated with multiple switch presses and/or minimum durations. Note that the XKB extension is needed for key gestures to work, so you may need to add +xkb to your X server command line for gestures to work properly. The X server command line is specified in the GDM configuration file in the server-foo sections.

The DwellKeyMouseEvents file controls the dwellmouselistner and supports gestures that involve the motion of a pointing device such as the system mouse of an alternative pointing device such as a head pointer or trackball may also be defined. Motion gestures are defined as "crossing events" into and out of the login dialog window. If the "dwellmouselistener" gesture listener is loaded, then alternative pointing devices are temporarily "latched" to the core pointer, such that motion from alternative devices results in movement of the onscreen pointer. All gestures are specified by the same syntax; that is, there is no distinction between a "core mouse" gesture and motion from an alternate input device.

On some operating systems, it is necessary to make sure that the GDM user is a member of the "audio" group for AT programs that require audio output (such as text-to-speech) to be functional.

Currently GDM does not remember what accessible technology programs have been started when switching applications. So if the user switches between the login program and the chooser, for example, then it is necessary for the user to redo the gesture. Users may need to also set up their default session so that the assistive technologies required are started automatically (or have appropriate key-bindings defined to start them) after the user session has started.

AT Troubleshooting

There are some common issues that cause users to have problems getting the gesture listeners to work. It is recommended that people use GDM version 2.18.0 or later for best results.

Some older X servers have a bug which causes detectable autorepeat to fail when XEVIE is enabled (which happens when atk-bridge is included as a GTK Module). This bug causes key gestures with a duration greater than 0 to always fail. A workaround is to simply redefine all key gestures so they have zero length duration, or upgrade your X server.

Some versions of GOK and orca will not launch unless the "gdm" user has a writable home directory. This has been fixed in GNOME 2.18, but if using an older version of GNOME, then making sure that the GDM user has a writable home directory should make these programs functional.

If you see an hourglass cursor when you complete a gesture but the program does not start, then this indicates that the gesture was received, but that there was a problem starting the program. Most likely the issue may be the lack of a writable gdm home directory.

Also note that some input devices require X server configuration before GDM will recognize them.

Accessibility Login Sound Configuration

By default, GDM requires a media application such as "play" to be present to play sounds for successful or failed login. GDM defaults the location of this application to <bin>/play (or <bin>/audioplay on Solaris. This can be changed via the SoundProgram GDM configuration option. Typically most text-to-speech programs (such as orca) use a separate mechanism to play audio, so this configuration setting is not needed for them to work.