Last year Caolan
and I demoed hotdesking with GDM and VNC.
Owen later pointed out that VNC
probably wasn't the way to go once the rendering
improvements they're working
come on line.
So, last week I picked up a patch I'd hacked up before Christmas,
finished it off and committed it to GDM. The idea is to do the same
thing as the VNC patch, but this time using a X proxy (like Xnest)
server on the terminal server instead of a VNC server.
Specifically, though, the features added to GDM are:
- You can now configure GDM to run XDMCP sessions on a local X
 proxy server. This may be useful on its own for performance reasons;
 in theory, at least, an X proxy server should be able to limit the
 number of roundtrips it makes to the remote X server since if all you
 want to do is query server state, then that state is local. I've no
 idea yet how well Xnest and others do on this in practice, though.
- If the proxy server supports disconnecting from its parent
 display and re-connecting later, you can configure GDM such that you
 can disconnect from your session and reconnect later simply by logging
 back in. The only proxy server's that I know of which support this is
 the DMX X server and NoMachine NX's nxagent. Its
 certainly possible to do this with any proxy though; I had it half
 done for Xnest before realizing DMX had good enough support to get the
 GDM patch done.
I've played around a little today with NoMachine's proxy. You can try
it out with GDM HEAD up by:
- Install NoMachine's server package
- Set xdmcp/EnableProxy=truein gdm.conf
- Download these scripts
    (run-nxagent.sh
 and reconnect-nxagent.sh)
 and stick them in/tmp
- Set xdmcp/ProxyXServerto
 ProxyXServer=/tmp/run-nxagent.sh -audit 0 -name NX -geometry 768x576andxdmcp/ProxyReconnectto
 /tmp/reconnect-nxagent.sh
- Re-start GDM
- From another machine run X -query $serverand login
 through the login screen
- Run /tmp/reconnect-nxagent.sh --to :20on the server to
 disconnect your remote X server from the session
- Run X -query $serveragain on the server, login and you
 should be immediately re-directed to your original session