line 636 of protocol/rq.py checks if type(val) is
types.StringType. This means that unicode strings end
up getting treated as integers. A good replacement for
that line would be:
if isinstance(val, types.StringTypes)
This will catch plain str's as well as unicode strings.
from Xlib import display
dpy = display.Display()
win = dpy.screen().root.create_window(0, 0, 1, 1, 0,
dpy.intern_atom('_NET_WM_NAME'), u'hey guy')
take the u off and it works fine.