python gtk.Socket, gtk.Plug new window

 ( bAndie9100 | 2015. március 30., hétfő - 11:00 )

python gtk-ban behúzom egy gtk.Socket() widget-be egy másik processz ablakját.
ez a program nyitna egy új ablakot (ugyanaz a processz), xwininfo-val látszik, hogy létezik az ablak, viszont a gtk beágyazás miatt nem jelenik meg.
kapok róla a beágyazó programban valahol valamilyen eventet hogy létrejött egy toplevel Window? hogy aztán reparent-elni* tudjam?
hogy kéne láthatóvá tenni?

* az nem az, de nem tom hogy hívják

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

annyival tudom pontosítani a helyzetet, hogy a beágyazott program
newwindow = gtk_plug_new(wid);
-val nyitja az új ablakot, ahol a newwindow a meg nem jelenő ablakom, a wid a Socket id-ja, amibe már egy ablak bele van ágyazva.

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

lehetséges-e egyszerre több Plug egy Socket-ban?
ha nem, akkor hogy jöhetet létre a newwindow?
hol kéne eventet kapnom arról, hogy a Socket új Plug-ot kapott?

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

félmegoldás, az is csúnya:
kell hozzá a wnck modul,
minden új ablakot figyelek a desktopon,
amelyiknek a pidje azonos a beágyazott progim pidjével, azt behúzom egy másik gtk.Sock-ba (tehát nem abba amibe már be van húzva az első ablak).

import wnck
screen = wnck.screen_get_default()
screen.connect("window_opened", new_window_event)
def new_window_event(screen, window):
        if window.get_pid() == a_beagyazott_ablakom_programjanak_pidje:
                masik_sock.add_id(window.get_xid())
                masik_sock.show_all()

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack

feléleszteném a thread-et, mert egy szorosan ehhez kapcsolódó hibába futottam.
az ablak behúzása gtk.Socket widget-be sikerült a Socket.add_id(window.get_xid()) hívással ... bizonyos környezetben!
ha nem fut ablakkezelő (csak a csupasz X11), akkor Socket.add_id -vel behúzza a kívánt ablakot.
ha mondjuk fluxbox fut, akkor is.
ha icewm fut mint ablakkezelő, akkor is végbemegy a Socket.add_id, meg is kapja az 'embedded' signal-t, de utána egyből szabályosan bezárja az a behúzott ablakot.
még érdekesebb, hogy az embeddelés az ellenkező irányba ebben az esetben is működik. tehát ha pl. xterm -into kapcsolójával a beágyazandó ablak folyamata embeddeli magát.
hogy tudom megállapítani, mitől záródik be icewm alatt az ablak?

~~~~~~~~
deb http://deb.uucp.hu/ wheezy yazzy repack