Gui sockselect

Just merging in the GUI stuff.  It doesn't really need its own branch, and I'm probably going to just get rid of it all...