We've been working around various problems with the core X protocol for about 15 years now. I think it's time to build an extension that includes small changes that fix big problems.
Such an extension would be limited to problems with existing core functionality that can be easily fixed in the server but for which client side workarounds are kludgy or broken. I've got three proposed problems and fixes implemented already and would like to hear other issues of interest to the community. 1) XEMBED error recovery The XEMBED specification http://www.freedesktop.org/standards/xembed/html uses nested windows to place one application window within another. One of the authors (Owen Taylor) brought a problem with error recover in this model to my attention and proposed a solution. The problem is caused by how SaveSet processing is done within the X server during (abnormal) client termination. Normal SaveSet processing reparents (embedded) windows to the nearest enclosing non-client window. In an embedding environment, that will be the window manager frame holding the embedding application. The window manager won't expect new windows to suddenly appear in this context and (generally) ignores them and goes about destroying the frame which takes the embedded application window along with the frame. The proposal is to select the root window as the SaveSet target window so that the window manager simply sees them as regular windows. A further refinement is to permit these windows to remain unmapped instead of suddenly popping up on the screen. 2) Selection Tracking Applications like the KDE 'klipper' monitor selection contents to save them and also perform actions based on them. Right now, this happens by having these clients contantly polling the selection. The proposal is to have a event delivered whenever the selection changes. 3) Cursor Image Echoing Applications like VNC or screen magnifiers work by duplicating the contents of the screen, but cannot succesfully track the cursor image in the duplicate screen. This makes the forwarded environment harder to use as the cursor image often contains significant semantic content -- like the precise location of window borders or application state like busy/idle. The proposal is to have an event reported when the cursor image changes and a request to fetch the current cursor image. I've stuck these features into a new XFIXES extension and included that in XFree86 CVS so that others might see the code and specification and test whether they solve the issues they're supposed to. This does not represent any endorsement by the XFree86 project or it's members (other than me), nor any assurance that the extension will be included in future XFree86 releases. Keith Packard XFree86 Core Team HP Cambridge Research Lab _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert