Next Accessibility Team Meeting - February 15, 2011 at 21:00 UTC - (details).
Gnome Magnifier Review
By: Jason Anthony Grieves
This review describes the majority of features and limitations of the current gnome magnifier. Though there are currently other Linux magnifiers, gnome-magnifier is the most usable product available. KDE 3 still does not have a great Assistive Technology infrastructure and other magnifiers do not have the ability to provide full screen magnification. I have been working with gnome-mag for the past year, after originally leaving it for further development. After quite a bit of tweaking and modification, I have been able to create a very usable environment on my desktop. Though not as fast and powerful as Zoomtext for Windows, gnome-mag shows great potential for future magnification in Linux accessibility.
This review will discuss installation and testing on a 2.6 Ghz HT Intel processor, ATI 9600 graphics card, 1 gig of DDR 3200 Ram, and a 10,000 rpm Raptor hard drive. My testing on an old IBM T23 laptop showed much slower performance, but still provided a very usable environment.
Built on the Gnome accessibility layer, X11 magnification properties, X11 Damage and Fixes extension, gnome-mag is a very usable and functional screen magnifier. The mainteners are still very active in GAP (Gnome Accessibility Project) and are working to provide future improvements. I was curious to see how often the package was updated, and I was greatly surprised to see new versions for every upgrade in Gnome so far.
The Gnome magnifier currently has a graphical front end with the Gnopernicus package. Though some parts are still being implemented, the GUI does allow you to change all the critical properties of the magnifier. The magnifier can be run with the “magnifier” command which allows for all settings to be set either at runtime or via a shell script which sets values in the gconf database. The documentation of features is fairly well explained with “magnifier –help” or at the Sun Accessibility Guide.
Though installation will differ per distrobution, Ubuntu's current installation provides confusion to new users. The Gnopernicus debian package “recommends” gnome-mag, but it is not a required depedency. Though this is true, gnopernicus can be built and run without the magnifier, there are no valuable dialogue messages in Gnopernicus sharing that the magnifier is not installed. When you check the box to run magnifier, Gnopernicus fails silently. When run from the command line (gnopernicus –enable-magnifier) the user is presented with a message saying the Magnifier-Server file is missing. This is a major flaw in usability. Gnopernicus should provide a better notification to the user to share that the magnifier was not installed.
The current version of gnome-mag for Ubuntu does provide the Damage and Xfixes hooks. These create a much better performance for the mangifer, as well as allow the cursor to be updated correctly. Without these hooks the magnifier creates a cursor which does not update. In other words if the unmagnified cursor displays a clock, the magnified cursor will not. Needless to say damage and fixes proide a much better experience.
Nevertheless the steps to install the magnifier and GUI frontend are:
- Alt + F1 to access the Application menu
- Use the down error to navigate to Accessories and chose “Terminal”
- Type “sudo apt-get update” and enter your password if requested
- Type “sudo apt-get install gnopernicus” and hit “Y” to confirm additional packages
- Type “sudo apt-get install gnome-mag” and hit “Y” if prompted
To run gnopernicus either type “gnopernicus” from the command line or head to Applications>Assistive Technologies>Screen Reader and Magnifier. I have noticed that when installed occasionally the system will not actually flip on these menu items. I was able to open up the menu editor, Alacarte in this case, and simply enable them.
When attempting to run Gnopernicus for the first time, you will receive a message asking you to Enable Accessibility Support and Logout. Though I felt a bit of Windows creeping up on me, I decided to oblige and logout and log back in. This sets up the GTK accessibility layer which allows accessible applications to communicate to the assistive technology.
Graphical User Interface Overview
The Gnopernicus GUI is not the most intuitive application I have used. You chose what AT (Assistive Technology) you want to start by going to Startup Mode, and “checking” the tool. You are not able to make changes to the AT product if it is turned off. This has been a bit of a problem for me in the past during my testing, but once you get the settings the way you want, there should not be too much of a need to change the magnifier often. I do feel that a product should be configurable even if it is not on. For example, what happens if you make a mistake, and the magnifier no longer works correctly? Your entire display may be corrupted but you can't reset to defaults without turning the magnifier on. There are also parts of the gnopernicus magnifier GUI that are not working. These are features that will most likely never be completed.
When turning on magnification for the first time on the majority of boxes I have used the Gnopernicus application gets “hidden” behind the ackwardly sized magnified window in Ubuntu. Instead of being split screen, the default settings create a box near the middle of the screen. I was forced to go down to the bottom panel and click “move” on the gnopernicus application to move it from under the magnified window. When trying to chose the “Default Preferences” once again the application threw this menu under the magnified window. Again I had to chose “move” and awkwardly move it from under the magnified window. Whether by sheer chance or glitch this behavior is often a show stopper to new users. They turn on a amgnfier and instead of getting split screen behavior, they get an awkard window with the application hidden. I have seen many frustrated users shut down the application and give up, not knowing that they could move the application from under the the window. After choosing the Default Preferences for the magnifier, it correctly resets to split screen, but this should be fixed for all users. The default behavior for the magnification creates cross hairs and 2.0 magnification scale.
Finally we can access the settings of the magnifier. To access the Magnifier Preferences navigate to Preferences>Magnifier Preferences.
Cursor and Cross-Hair Preferences
The configuration panel allows you change settings on the cursor and cross-hairs. These options include size and color enhancements to the cursor and cross hairs to suit all visual handicaps. It is important to not attempt to use cursor themes with the magnifier. I found that many of my large print cursors did not work with the magnifier. These included the “xcursor-themes” package found in Ubuntu. The program does provide adequate support for changing color and size so this should not be much of a problem.
Zoomer List (Source, Target, and Scaling)
The “Zoomer” settings allow you to set scaling, smoothing, placement, and mouse tracking. This dialogue box is where all of the real action takes place. The smoothing algorithms were impressive but obviously took a hit on performance. Though I am low vision, I still felt everything was very smooth and crisp even blown up by two factors even without the smoothing.
I feel the default Mouse tracking and focus tracking were also well thought out. I have always felt “pushing” to the edges of the screen were the most logical way of getting to where I needed to go.
The border options are currently under development and are not functional from my testing. I have also not found a way to add multiple zoomer lists, even though this seems like a valuable functionality. The text box appears to be disabled and documentation shared that it is under construction.
Split Screen Magnification Review
Even if the program has a good feature set, has good performance, and is easy to configure the real test comes in real day to day tasks. Can it handle the desktop? Can it handle the web?
To make a long story short the answer is no; I would say split screen magnification is not a very usable environment. I have had applications get “lost” under the magnified portion of the screen, dialogue boxes get cut half way so you are forced to try to fit them in 50% of the screen, and even completely in-accessible applications such as the Gnome logout dialogue box, which is always stuck in the middle of the screen. In Ubuntu the logout box does have complete unmagnified focus , but I have seen in past distrobutions and version where I had to guess which button I was on, because the magnified portion of the screen was covering the logout box. Even gnopernicus seemed to throw some dialogue boxes in the middle making life very difficult. Even trying to setup even a mail account was impossible for me. I was forced to move the box multiple times through the wizard.
On a brighter note Firefox and Open Office are somewhat usable with split screen magnification. When maximized the applications do use only 50% of the screen, but you still have to move the scroll bar or work with caret navigation to get around. Later discussion of these applications will provide you with further information.
On Ubuntu whenever you need to perform administrative tasks an inaccessible box comes up which takes the focus of the entire desktop without exposing any accessible events to the magnifier. This is a major show stopper for Ubuntu's accessibility. This will most likely be fixed in te next release of Ubuntu, but until then you will have to blindly input your password and hit enter.
It became obvious to me that split screen magnification was not a viable solution especially compared to Windows. Thankfully gnome-mag does support full screen magnification. Finding “how” to accomplish it was a battle on its own.
Full Screen Magnification Introduction
Full screen magnification is available under two scenarios. You either have two video cards, or you use a virtual “screen” which takes some and understanding of the xorg.conf file. The first option is great, but the majority of users will only have one video card. Being in that category I was unable to test this solution. I expect however the process to be very similar and produce even better performance.
It is also important to note that there is no GUI to handle this work. It entails modifying xorg.conf, which could easily destroy your graphical experience. A lot of users are not even aware of the ability to do full screen magnfication. Only those brave enough to ask or research on their own will find hints of this mythical treasure. Sadly because they need the assistive technology in the first place they will not be able to really obtain or even try these solutions for themselves.
I started my research at the Sun Accessibility Guide. I marked up my xorg.conf file in the way they described, but found a couple of errors. The instructions may be old, or simply based off of their own desktop. The instructions below are how I and others have been able to enable full screen magnification in Ubuntu.
Please Note: Do not attempt to just copy the code that I have listed. I can almost gurantee it will not work. Carefully read the sections and update your file.
Installing a virtual screen for full screen magnification.
Open a terminal (Applicatoin > Accessories > Terminal) and type “sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak” to have a backup of your current xorg configuration file
- Type “gksudo gedit /etc/X11/xorg.conf”
- At the end of xorg.conf create the following section “Device”
Section "Device" Boardname "dummy" Driver "dummy" Identifier "dummy" VendorName "dummy" EndSection
- Create a new section “Monitor”
- Look for the “Section Monitor.” Copy and paste the entire section at the end of xorg.conf.
- In the new section change the “Identifier” to “MonitorD”
- Create a new section “Screen'
- Look for the “Section Screen” Copy and paste the entire section at the end of the xorg.conf
- In the new section make the following changes, but keep all of the other options the same
Device “dummy” Identifier “ScreenD” Monitor “MonitorD”
Find the section “ServerLayout'
Modify the screen line to read 'Screen "YOUR_REAL_MONITOR_NAME" 0 0', Where YOUR_REAL_MONITOR NAME=Identifier found in the original "Monitor" Section. Ususally this is "Default Screen"
Create another screen line which reads 'Screen "ScreenD" RightOf "YOUR_REAL_MONITOR_NAME" '
- NOTE: the code below was for My Monitor's Identifier which read "Default Screen"
Screen “Default Screen” 0 0 Screen "ScreenD" RightOf "Default Screen"
- Restart the current X session by hitting “Ctrl + Alt + Backspace”
This is a SAMPLE list of changes I made to my xorg.conf as a reference. Please note this will not work on most machines. I have commented out each line so that no one attempts to copy and paste this into their xorg.conf file.
#Section "ServerLayout" # Identifier "Default Layout" # Screen "Default Screen" 0 0 # Screen "ScreenD" RightOf "Default Screen" # InputDevice "Generic Keyboard" # InputDevice "Configured Mouse" # InputDevice "Synaptics Touchpad" #EndSection #Section "Device" # Boardname "dummy" # Driver "dummy" # Identifier "dummy" # VendorName "dummy" #EndSection #Section "Monitor" # Identifier "MonitorD" # Option "DPMS" # HorizSync 28-51 # VertRefresh 43-60 #EndSection #Section "Screen" # Identifier "ScreenD" # Device "dummy" # Monitor "MonitorD" # DefaultDepth 24 # SubSection "Display" # Depth 1 # Modes "1024x768" # EndSubSection # SubSection "Display" # Depth 4 # Modes "1024x768" # EndSubSection # SubSection "Display" # Depth 8 # Modes "1024x768" # EndSubSection # SubSection "Display" # Depth 15 # Modes "1024x768" # EndSubSection # SubSection "Display" # Depth 16 # Modes "1024x768" # EndSubSection # SubSection "Display" # Depth 24 # Modes "1024x768" # EndSubSection #EndSection
Virtual Screen Display Configuration
It may be necessary to “fix” the settings of your virtual display. First, go under System > Preferences > Resolution. You should notice two displays that you can set. First, make sure the first display is at maximum 1024 x 768. Next make sure the second display is equal to the same resolution. If you are “stuck” on 640 x 480 then you may need to modify the xorg.conf file again by adding in the vsync and horizontal sync. To accomplish this:
- In a terminal type “sudo ddcprobe | grep monitorrange”
- Take the first set of numbers (horizontal sync) and add them to BOTH monitor sections
HorizSync Number1 – Number2
- Take the second set of numbers (vertical refresh) and add them to BOTH monitor sections
VertRefresh Number1 – Number2
Restart X with Ctrl + Alt + Backspace and log back in. You should now be able to change the resolution of both screen's to match. Having them at the highest (1024 by 768) will give you more room to work on the desktop. It is important that both screens are the same resolution.
Turning on full screen magnification
Open up gnopernicus (Applications > Accessibility > Screen Reader and Magnifier
Chose “Startup Mode” > “Magnifier”
- Navigate to “Preferences” “Magnifier”
- For better performance disable the cross hair
- Chose the “default” under the “Zoomer List”
- Modify the source to read “:0.1”
At this point the right side of the screen should be displaying your background and not the magnified portion of the left side of the screen. If this is NOT the case then do not perform the following step
- #8 Under Zoomer Placement change the following values
Left = “0” Top =”0” Right = “MAX VALUE” (in my case it was 1023) Bottom = “MAX VALUE” (in my case it was 767)
You can use the “up” arrow in the boxes to find the max pixel value you are currently displaying
After enabling this, the screen should take some time to adjust and begin displaying full screen magnification. If it does not use the Alt + F4 keys to close Gnopernicus and attempt to re-open it. The Magnification will begin by default at this point and try to attempt full screen magnification again.
As you can see this is not the easiest task in the world, and for a disabled user the process can be even more challenging. I am surprised the developers have not created some shell scripts to help automate this task. The Ubuntu Accessibility Team has discussed making some simple scripts to do the work, to make it easier for new and disabled users.
Overview of Full Screen Magnification
The entire desktop should be magnified. You should notice three major problems. First you will get two sets of panels. One properly magnified, and one still unmagnified. This really become a burden when trying to work with applications. Second, you will find your mouse “sliding” into the other screen. This created extremely annoying problems for not only the low vision user, but other users on the system. Since xorg.conf modifies all sessions, everyone is affected. Finally you will notice gnopernicus and whatever applications were on the original screen are now gone. All of these problems are caused because you setup another screen in X. I have found three pretty good workarounds to these problems, which created a working environemnt for me.
First go ahead and delete the bottom unmagnified panel (right click and “Delete”) the next logical step would be to delete the top unmagnified panel, but unfortunately I experienced a lot of bugs when I did this. After a little bit of hunting I found that gnome-panel requires at least 1 panel to be running. Well on the “non virtual” screen there were no panels running, which I believe were causing problems. Instead of deleting, right click go to “Properties” and uncheck “Expand” check auto-hide, check show hide buttons, and uncheck Arrows on Hide Buttons. You can now click on the “hide” button and the panel will be mostly out of your way and still not produce really strange errors. You can also chose the “Background” tab and make the top bar completely transparent, making it even less noticable.
To improve the issue with running into multiple screens you can modify your xorg.conf file with the following change.
"ScreenD" Relative "Default Screen" 0 0 #Section "ServerLayout" # Identifier "Default Layout" # Screen "Default Screen" 0 0 # Screen "ScreenD" Relative "Default Screen" 0 0 # InputDevice "Generic Keyboard" # InputDevice "Configured Mouse" # InputDevice "Synaptics Touchpad" #EndSection
You will now not be able to navigate to the virtual screen at all. This also helps the rest of the users on the system.
As long as you launch the application via the magnified area (i.e. use the magnified Applications menu) you should be fine. However you definitely want to load Gnopernicus and be able to change settings when magnified. Instead of chosing to enable assistive technology in System > Preferences > Accessibility Support, go ahead and add the following to your session launched applications (System > Preferences > Sessions > Startup Programs)
gnopernicus –display 0.1
This will launch gnopernicus and whatever accessibility tools are turned “on” with gnopernicus. If you exit with the magnified on in gnopernicus, it will load when opened again.
After fighting these limitations, I was finally looking at a pretty good desktop. I was very pleased with the perforamnce. Even on the older machines the magnifier does a pretty good job magnifying the data. It Caches a lot of information, so working on documents was pretty efficient.
The tool is only as good as the platform it is runs. If an application is built with poor accessibility features, then the AT will perform poorly. Although the magnifier will zoom, it will not be able to follow the focus of the keyboard or application.
Though I have not been able to work in all of the default gnome applications, I have experienced much success in some of the most used ones. For example working in gnome-terminal,, gnome-panels, gedit, and nautilus all produced good focus when navigating the interface with the keyboard. Because many of the default gnome applications have been written well to the HIG (Human Interface Guidelines), functionality should be pretty good across the Gnome Desktop. Of course there will always be exceptions. Not every developer tests his application to make sure every widget is accessible. Many times (for example in the gedit save dialog box) tab navigation can be awkward. The majority of these problems are easy to fix, and developers are happy to make their applications accessible. This magnifier review sadly cannot cover all of the aspects of these applications.
Firefox vastly improved its accessibility support in Firefox 1.5. Though most of this was DHTML and screen reader implementation, IBM and Sun have become heavily involved in improving the accessiblity support. The next major version of Firefox should include some very important bug fixes for screen magnification. For example, you are able to navigate down the page properly but if you begin typing in a text box, the focus is immediately lost and is put to the top corner of the application. Other bugs have been found making the current version of Firefox very unusable for normal day to day use with gnome-magnifier. Please note that Firefox is much more accessible with the Windows Magnifier Zoomtext.
Open Office Writer
Open Office is also improving in accessibility, but fails in some of the same ways as Firefox. Focus is lost with tpying and navigating a document. Though I have not looked into what may be causing this, the default Open Office in Ubuntu is not very accessible.
Other GTK Applications
Of course there are thousands of applications I have not tested. Many of the GTK applications “may” be accessible, depending on how well they were coded. However there may be a need to export an environmental variable module to bring these accessible elements to the attention of magnifier or screen reader. One must first “export GTK_MODULES=gail:atk-bridge” and then launch the application. This was necessary for older versions of gaim, though now most of the gaim interface is accessible without this setting.
As you can see the world of magnification in linux is just unfolding. The real battle is not the magnifier itself. Its getting the magnifier to work in the environment. The future is bright for both better magnifiers and better applications. Composite magnification is the new wave of the future, KDE 4.0 promises to hold some amazing new accessibility features, and of course Gnome will be commmitted to improving its applications and interfaces. I look at gnome-mag and I feel it has overcome some of the biggest obstalces that will face the future. Thankfully the mainteners have continued to improve its design and backend, making it faster and cleaner. Before I really dug into the gnome-mag package, I was still under the impression full screen magnification was still a distant light for Linux. However now I am able to demo the power of the magnifier and accessible applications.
But the desktop was created for a sighted user who uses the entire screen for panels, and juggling many applications on the screen at once. A blind user does not have the luxury of being able to hit panels quickly, or view menu titles by glancing to the top of an application. The user experience is vastly different. I feel there is a much great need for a completely new user interface for low vision and blind users. I believe magnification of the screen is just the tip of the iceburg as to what a low vision user could be experiencing. We are fighting so hard to force a low vision user and even blind users to keep their minds focused on what a normal sighted user would see. Perhaps the future holds new user interfaces which are much richer than a 2D slab with widgets stuck to it. Whatever the future is, Linux accessibility is here to stay, and those in the opensource world, Sun, IBM, and other companies are working hard to improve a free and usable desktop to the disabled.