How to start messing around with creating a rootless mode...
Harold Hunt
huntharo@msu.edu
Sun Jun 9 07:58:00 GMT 2002
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
More information about the Cygwin-xfree
mailing list