from gi.repository import Gtk, GLib

parent = Gtk.Window(title="parent", default_width=300, default_height=300)
child = Gtk.Window(title="child", default_width=200, default_height=200)
child.set_transient_for(parent)

def move_child(*args):
    # get the fake origin from the parent
    ignore, x, y = parent.get_window().get_origin()
    # move relative to it
    child.move(x + 10, y + 10)
    # afaics, the child window should now be over the parent with 10 pixel
    # offset. but this does nothing instead :(

button = Gtk.Button(label="click here to move")
button.connect("clicked", move_child)
child.add(button)

parent.show_all()
child.show_all()

GLib.unix_signal_add(0, 2, Gtk.main_quit)
Gtk.main()
