Linux Window Managers and Accessibility



wm-spec-list & Sawfish Experts:

[ for those of you on gnome-accessibility-list, please forgive the repost,
  but I wanted to make sure this email had visibility on these other lists
  as well ]

This email addresses the work needed to support the AccessibleDesktop
SPI from a window manager perspective.

Although this SPI is not Gnome specific, the current proposal for the
interface header file can be seen here:

   http://developer.gnome.org/projects/gap/tech-docs/libspi.h
   
More general information can be found here:

   http://developer.gnome.org/projects/gap/

We expected to need C bindings to some window manager methods, in support
of the AccessibleDesktop SPI.

In summary, this SPI is the interface that Assistive Technology (AT)
vendors will use to integrate their hardware solutions into the windowing
environment.   This work is a part of an overall solution which will make
the desktop accessable to people with disabilities.

AccessibleDesktop is actually just a special type of "Accessible" and it exports 
the same interfaces.  However the semantics of AccessibleDesktop are slightly 
different from those of Accessible, in that the children of AccessibleDesktop
are always of type AccessibleApplication.
   
In summary the SPI methods that we expect will require calls to the accessible 
window manager are summarized as follows (based on the current SPI
definitions).  In other words we are hoping that the window managers can
support the function calls mentioned below in the section "needed C bindings".

I am hoping that these needs can be included in the GNOME/KDE Window
Manager Specification.  Refer to:

  http://www.freedesktop.org/standards/wm-spec.html.

Since Sawfish is the default Gnome window manager, we need Sawfish to support
these bindings.  Can these bindings be added or does Sawfish already support
C bindings that provide the needed information?

Thanks!

Brian

-- needed C bindings --

short getVirtualDesktopCount ();

SomeReferenceToVirtualDesktop *getDesktop (in short n);

[given a reference to one of these virtual desktops, we need to be able to 
implement the following:]

wstring getName ();
wstring getDescription ();

[If virtual desktops have no "description" that's probably OK, one can be 
synthesized].

long getChildCount ();

[the above function, for an "AccessibleDesktop", should return the number of 
accessible applications that are associated with that virtual desktop.]

long getPIDAtIndex (in long index);

[Our implementation requires that the virtual desktop's getChildAtIndex method 
returns an AccessibleApplication.  Probably the best way to do this is to 
implement the above method in which the window manager returns the PID of the 
"Nth" application on said desktop.  Alternatively we need a way of getting a
list of PIDs from the window manager, at which point we can construct the
index-PID  mapping ourselves. ]

long getIndexOfPID (in long PID);

[the above method would be nice, but again we can do the search ourselves if we 
have to, based on a window manager API that allows us to get a list of PIDs for
a given virtual desktop].

boolean isActive (in short desktopIndex);

[Must be able to determine which desktop is the currently active one].


We also need to be able to register for the following window manager 
events/notifications:

VIRTUAL_DESKTOP_ADDED
VIRTUAL_DESKTOP_REMOVED
ACTIVE_DESKTOP_CHANGED
WINDOW_MAXIMIZE
WINDOW_MINIMIZE
WINDOW_RESIZE
WINDOW_MOVE
WINDOW_DESTROY
APPLICATION_ADDED (or new PID added to virtual desktop's app list)
APPLICATION_REMOVED (or moved from one desktop to another)

Note that since the last two events concern the relationship between apps and 
virtual desktops, not "window create" or "application exit", I think they need
to be delivered by the window manager and not the application.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]