Sawfish
Development quick access

Composite[]

Composite Spec

Composite Howto and Example

Composite

This is the extension that allows all the fancy stuff to be done. It is essentially support for backing stores with an protocol for accessing and manipulating that store for presentation. The extension allows for both manual redirection and automatic redirection but only one connection and specify manual redirection (making it the composite manager). I believe this exclusive manual control per window but for practical reasons is usually specified on all windows if it is on any.

This extension does not need to be done on the same X connection as the WM. The first implementations, xcompmgr and glxcompmgr, were completely separate programs. This means that the Composite support can and should be developed first as a separate librep program+plugin.

I would suggest a development path of: separate instance -> loaded module (but separate X connection and event loop) -> Composite events handled in the same event loop as the rest of the X events for sawfish.

Damage and Fixes[]

Fixes Spec

A collection of fixes and changes to the X protocol. This includes the Region type. XFixes is not strictly needed in the core sawfish (the current mechanism handles things well enough). The Region type that it provides is needed by the next extension.

Damage Spec

A collection of fixes and changes to the X protocol. This includes the Region type. XFixes is not strictly needed in the core sawfish (the current mechanism handles things well enough). The Region type that it provides is needed by the next extension.

RandR[]

RandR Spec

Out of all the changes in X, this is the only one that would need to be changed directly in sawfish. A quick reading of the spec suggests that the current usage, rereading Xinerama data on the change event, is sufficient. What can be done here is to change from using Xinerama to query to using xrandr which might result in a more finely tuned event system. A slightly separate concern would be to create a module for using xrandr to control the screen placement and activity.

Render[]

Render Spec

Not really needed but it may come in useful during testing of the Composite extension.

XCB[]

XCB

This is a new C binding to the X protocols. It claims to fix many of the oddities and problems of the old Xlib design. This would be a major change with little to no difference from the user's perspective. Changing sawfish to be based of XCB may clean some things up and make development easier, but it would be a drastic change. This is definitely something to wait on.

General X controls[]

Things like DPMSDisable(dpy) from #include <X11/extensions/dpms.h> to control the X display. Much if not all functionality is done through xset. Would have to see what advantages not shelling out to xset would bring.