After saying I was going to try this for the past five or so years... I finally got FreeNX installed on my new Gentoo appliction server virtual machine. I'm still trying to figure out the underlying components and how it works so I can customize it a bit. So far so good though. It is a good deal faster than VNC which is good news for my thin clients at home (I mean... old laptops) and it also supports Esound (I wish it supported Pulseaudio, but... Pulse supports ESD, so...
1. FreeNX is a GPLed server that uses the NX protocol created and opened by NoMachine. It is NOT VNC or RDP (MS remote desktop)
2. Sadly, it's not completely clear what it is, other than it is based on X (I think) and uses ZLIB and JPEG compression to great effect
3. It also has support for the Enlightened Sound Daemon which is sort of a virtual automated mixer for multiple sound streams that sends the mix to your sound card. This means that your remote desktop sessions have sound. (I've been doing this for years with raw ESD itself, but NoMachine implements it better than I can)
4. The bottom line is that even over a slow link, like a modem connection, you can get decent response from a remote desktop session. (Sound only works well in the local LAN or if you have an ungodly fast internet connection on both ends)
I tried running a video remotely and it played well with some tearing over my DSL 768k line. And... I'm posting this entry via the NX client right now.
For anyone on Gentoo interested in trying it out, there is a writeup at the Gentoo Wiki that tells you all about it. It's not totally clear, but it's enough to get you started. I think that's the main problem with the FreeNX project, not a lot of clear documentation for people who don't have some previous knowledge. One thing that isn't obvious is that when you install, you're installing the FreeNX server, but you're pulling down the proprietary !M NX client in order to connect. I'm not 100% sure on this, but it appears that there really isn't an NX client that in current development in the FOSS world. So you wind up having to use the proprietary but free of charge !M NX. That's OK with me since it seems to work well enough. I'm using the Linux client that is in Gentoo Portage, but there is also a Windows client as well as a Mac OS X client.
It's pretty simple to use once everything is configured. (You need to create an SSH key that is dedicated to the NX client and then import the public key onto the machine you'll be connecting from) You just enter your server connection info, set your screen size, choose the kind of system (OS) you'll be connecting to and the kind of session you'll have on that system (*nix only) and connection speed, then log in. Here's an excerpt of what you can do from the project Wiki for FreeNX:
Consider logging in from remote (eno2001: say... your machine at work):
* You start a new session (unix-kde or unix-gnome)
* You work with it and it runs fast (and even faster than VNC or shadow
* You decide that you want to go home now, so you press ctrl+alt+t (if in fullscreen mode) or close the window
The session is now suspended and awaits you resume.
Okay, you go home now:
* You login into your desktop and you have another fresh new session
* You startup nxclient
* You connect to the nxserver running on 127.0.0.1
* You have your running session with all open programs again and see like a wonder the desktop stretches until all programs are fitting on screen again.
So now you have a 1600x1200 sessíon. (eno2001: They failed to explain whether this is a resizing of the desktop image or a real change in the size of the desktop itself. I haven't yet tested this) Once you finish working with it, you suspend it again:
* click on the magic pixel, the window is minimized, right click on the taskbar and choose close
* press ctrl+alt+t
* close the window
* press ctrl+alt+t
A dialog comes up that asks you if you want to terminate or suspend the session, you choose to suspend it.
I'm impressed so far, but I really need to figure out the components and break it up into something more usable for my needs. Hopefully this might replace VNC for a few things that I do where I need snappy response from the remote desktop...