Re: Linux Window Managers and Accessibility


John replied to Brian's forward, on accessibility SPI support involving the 
window manager.

A number of our needs are addressed by wm-spec properties, which is great.

I will for the most part not comment further on these parts of the SPI, but 
will elaborate on a few other issues.

>|SomeReferenceToVirtualDesktop *getDesktop (in short n);
>Why can't the reference simply be the integer n?

It can. of course.  The Accessibility SPI can take responsibility for creating 
"AccessibleDesktop" container structures, the point here is that for any 
property one wishes to obtain for a desktop, it should be possible to ask for 
that property for the "Nth desktop".

>|long getChildCount ();
>|[the above function, for an "AccessibleDesktop", should return the
>|number of  accessible applications that are associated with that
>|virtual desktop.]
>What is an accessible application?
>Is it different to a window? Is there a many-to-one mapping from
>windows to accessible applications?

In short, yes to both.

Again, it's mostly the responsibility of the Accessibility SPI implementation 
(which I will hereafter refer to as the AccessibilityBroker) to return the 
AccessibleApplication children of an AccessibleDesktop.  It is the 
responsibility of applications which support the Accessibility SPI (thus, 
"AccessibleApplications" to register with the AccessibilityBroker.  What is 
needed from the window manager is a way to map these AccessibleApplications 
onto desktops.

AccessibleApplications may reside on a different host, thus in order to 
identify them something like a PID:hostname pair is probably required.  At any 
rate we need to be able to determine for each AccessibleApplication which 
desktop(s) is is resident on.  In the case of AccessibleApplications which do 
not map any windows, it's up the the AccessibilityBroker to decide whether they 
belong to "no desktop", "all desktops", etc., only for AccessibleApplications 
which map windows on particular desktops do we need to involve the window 

I notice that John did not mention this part of the SPI (getPIDforIndex, 
getIndexForPID() ).  As I noted above the mapping should probably be not just a 
PID but include host information as well.  Perhaps a better API would be:

boolean desktop_getPIDForIndex (in short desktop, 
                                in long index, 
                                out long pid, 
                                out long hostIP);
// returns false if not a member of the desktop in question

long desktop_getIndexForPID (in short desktop,
                             in long pid, 
                             in long hostIP);

This is the area of the SPI/API that I am most concerned about, it seems 
straightforward to implement the rest.  But we need a way to associate the IDs 
that the accessible apps give the AccessibilityBroker when they register with 
the window manager's information about which windows are mapped in which 
desktops.  Note that since the accessibility support is on a per-app basis (not 
per-window) we need to convert from windows to apps as well.

>|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 
>|to be delivered by the window manager and not the application.
>I don't understand this relationship, so I'm not going to comment on
>how these would be implemented.

This just means that an application's desktop mapping (i.e. that of one or more 
of its windows) has changed.

>Anyway, I don't think there needs to be anything window-manager
>specific about this - it should be reasonably simple to implement a
>shared library to do all the property and event monitoring...
>	John

Thanks, and best regards,


Bill Haneman x19279
Gnome Accessibility / Batik SVG Toolkit
Sun Microsystems Ireland 

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