diff -Naur -wbBE wine-0.9.54-fe/dlls/winex11.drv/x11drv_main.c wine-0.9.54-fe.rootwin/dlls/winex11.drv/x11drv_main.c --- wine-0.9.54-fe/dlls/winex11.drv/x11drv_main.c 2008-01-26 00:05:38.000000000 +0800 +++ wine-0.9.54-fe.rootwin/dlls/winex11.drv/x11drv_main.c 2008-02-12 23:20:33.000000000 +0800 @@ -447,6 +447,8 @@ Display *display; XVisualInfo *desktop_vi = NULL; const char *env; + int new_root = -1; + XWindowAttributes attr; setup_options(); @@ -525,6 +527,22 @@ if (TRACE_ON(synchronous)) XSynchronize( display, True ); + /* Handle WINEROOTWIN environment variable */ + if (getenv( "WINEROOTWIN" )) + { + const char* root_str = getenv( "WINEROOTWIN" ); + if (0 == strncmp( root_str, "0x", 2 )) + sscanf( root_str + 2, "%x", &new_root ); + else + sscanf( root_str, "%d", &new_root ); + if ((new_root >= 0) + && XGetWindowAttributes( display, (Window)new_root, &attr )) + root_window = (Window)new_root; + } + + if (root_window != DefaultRootWindow( display )) + xinerama_init( attr.width, attr.height ); + else xinerama_init( WidthOfScreen(screen), HeightOfScreen(screen) ); X11DRV_Settings_Init(); diff -Naur -wbBE wine-0.9.54-fe/loader/wine.man.in wine-0.9.54-fe.rootwin/loader/wine.man.in --- wine-0.9.54-fe/loader/wine.man.in 2008-01-26 00:05:38.000000000 +0800 +++ wine-0.9.54-fe.rootwin/loader/wine.man.in 2008-02-12 23:52:34.000000000 +0800 @@ -207,6 +207,14 @@ .I DISPLAY Specifies the X11 display to use. .TP +.I WINEROOTWIN +If set, +.B +wine +will embed its desktop under an existing X11 window with the ID specified by +this variable. This allows fullscreen Windows applications to be embedded +inside X11 applications. +.TP OSS sound driver configuration variables .TP .I AUDIODEV