Now that we have the -nodecoration parameter we can start messing around with making the some initial moves towards a rootless mode, just like XDarwin. Here are some initial steps to take that would help you learn a little about creating a rootless mode:
1) Start off by simply overriding PaintWindowBackground to paint a transparent background to cause the X Windows (still managed by a window manager such as twm) to 'float' above the Windows desktop when Cygwin/XFree86 has the focus. 2) You'll need to look at xc/programs/Xserver/hw/darwin/quartz/rootlessScreen.c/RootlessPaintWindowBac kground (). There is a check in this function that paints the root window background using the 'magic' transparent color. You'll need to do something like this for Cygwin/XFree86, so you'll need to start by finding the Windows 'magic' transparent color. You'll also need to put a function that is almost equivalent to this function into some file in hw/xwin/. 3) You now need to wrap the paint background function so that our paint background function gets called first. XDarwin does this in xc/programs/Xserver/hw/darwin/quartz/rootlessScreen.c/RootlessWrap (). To start you'll need to make a similar function to this in hw/xwin/, or you could just copy the WRAP macro and the call to it for PaintWindowBackground into hw/xwin/winscrinit.c/winFinishScreenInitFB (). Darwin calls RootlessWrap through a convoluted sequence something like: DarwinAddScreen->QuartzSetupScreen->AquaSetupScreen->RootlessInit->RootlessW rap. If you do all that you'd have put Cygwin/XFree86 on the road to having a rootless mode. Good luck, Harold
