[winswitch] forwarding a X11 window with child windows
Bodo Martin
bodo.martin at aci.uni-heidelberg.de
Tue Mar 7 20:59:32 GMT 2017
>Am 07.03.2017 um 16:00 schrieb Antoine Martin via shifter-users:
> On 07/03/17 01:30, Bodo Martin via shifter-users wrote:
>>
>> Hi
>>
>> is it possible to forward a X11 window with children to the client? - or
>> rather, reparent with XReparentWindow two remote windows (already
>> forwarded via xpra ?
> I don't see why it wouldn't work: the xpra client is just another X11
> client application.
>
>> This works for e.g. a ssh session (for non-GL
>> windows) but crashes with xpra. (setup: xpra 1.0.2, linux to linux , via
>> ssh )
> What crashes exactly? xpra or something else?
> I'm not sure why GL would make much of a difference here, but you can
> try turning it off with "--opengl=no"
> Do you have a reproducible test case I can try?
ok, here is a minimal test program:
--- snip ---
// modfied from:
// Ch. Tronche (http://tronche.lri.fr:8000/)
#include <X11/Xlib.h>
#include <assert.h>
#include <unistd.h>
#define NIL (0)
int main()
{
Display *dpy = XOpenDisplay(NIL);
assert(dpy);
int blackColor = BlackPixel(dpy, DefaultScreen(dpy));
int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
// Create the window
Window w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0,
250, 150, 0, blackColor, blackColor);
XSelectInput(dpy, w, StructureNotifyMask);
XMapWindow(dpy, w);
XFlush(dpy);
// Wait for the MapNotify event
for(;;) {
XEvent e;
XNextEvent(dpy, &e);
if (e.type == MapNotify)
break;
}
Window child = XCreateSimpleWindow(dpy, /*w*/
DefaultRootWindow(dpy) , 0, 0, 200, 100, 0, whiteColor, whiteColor);
XSelectInput(dpy, child, StructureNotifyMask);
XMapWindow(dpy, child);
// Wait for the MapNotify event
for(;;) {
XEvent e;
XNextEvent(dpy, &e);
if (e.type == MapNotify)
break;
}
XFlush(dpy);
// reparent (to x,y does not work, not processing events)
XReparentWindow(dpy, child, w, 0, 0 );
XFlush(dpy);
XSync(dpy,true);
sleep(100);
}
--- snip ---
reparenting a white window into a black one. This works both locally and
over an ssh connection, but not with xpra (no white window in the black
one shown).
(The crash I was referring to happens when I try to reparent the winIDs
from the parentID of the session, giving me different winIDs , which may
not be a good idea)
Cheers
Bodo
--
Dr. Bodo Martin
University Heidelberg
Anorganisch-Chemisches Institut
Im Neuenheimer Feld 270 69120 Heidelberg Germany
Phone: +49-6221-546610 Fax: +49-6221-546617
Web: http://bodomartin.uni-hd.de
More information about the shifter-users
mailing list