[pygtk] Embedding external xwindow apps in top level window
Nathaniel Smith
njs at pobox.com
Tue Apr 1 12:35:40 WST 2008
On Fri, Mar 28, 2008 at 11:11:22PM -0700, Newell Jensen wrote:
> Is there a way to embed/nest other xwindow guit apps within a top level
> window in pygtk? I have been searching all over and have not figured out
> how to do this.
> Thanks.
The real problem with doing this is that if you don't have some sort
of cooperation from the embedded window, then life is Difficult. For
instance, if you want the embedded window to receive keystroke events,
how are you going to arrange for it to get focus? (Your answer will
involve details of the X core protocol, and the ICCCM window manager
spec.)
But anyway, there are two basic things you can do:
-- if the app you want to embed is designed to be embedded, you just
need to give it the XID of the window where you want it to live.
Xephyr, for instance, has an argument "-parent", which you would
use like:
window = gtk.gdk.Window(myparent, ...)
spawn(["Xephyr", "-parent", str(window.xid)])
-- if you want to just grab some other app's window and jam it into
your app, then you first need to figure out the XID of *that*
window ("xwininfo" will do this, for instance), then do something
like
win = gtk.gdk.window_foreign_new(the_xid)
win.reparent(my_window)
But your best bet is still probably to find another approach.
-- Nathaniel
--
Electrons find their paths in subtle ways.
More information about the pygtk
mailing list