The NoMachine NX
http://www.nomachine.com/ protocol and applications are perhaps less known than VNC, RDP or even Citrix, but they perform similar functions: run applications from a remote server as if they were local applications (or the entire desktop).
Thin Clients have used this type of technology for ages, but NX makes it especially easy to get it up and running. It is also very fast compared to other solutions. NoMachine provides a mixed bag of open source and closed source applications - but there are free alternatives to the closed source ones.
On the server side, there is FreeNX
http://freenx.berlios.de/ which provides a fully open sourced server, which is available as a package for multiple Linux distributions.
On the client side however, there are free clients available from NoMachine, but not directly for the ARM processor (there are some embedded clients, but these are not generic). Luckily there are a few Open Source clients available.
One of the clients available, even as a package in the Ubuntu repository for ARM, is QtNX. QtNX is promising, but still lacks some features. None the less, it provides some of the needed libraries for the next client - OpenNX.
OpenNX
http://sourceforge.net/projects/opennx/ is a drop in replacement for the NoMachine NX client. It behaves and looks in a similar way which is why it was chosen for our customers who are already familiar with the NX Client on other platforms. The compilation of the client goes smoothly after installing the needed development packages and some others (libcups2-dev, libopensc-dev, libwxgtk2.8-dev, libsmbclient-dev, libx11-dev, libxmu-dev, libxcomp-dev, libpng-dev, libjpeg-dev, build-essential, zip, xorg, xinit).
A make install will install the client as opennx under /usr/local/bin, to which you should also create a simlink to called nxclient.
FreeNX however also need nxssh (which is available from the NoMachine website
http://www.nomachine.com/sources.php. To compile this package, just run ./configure and make a little change to the generated Makefile to remove the -L../nxcomp/ part.
Make sure to install also the development packages for libpng and libjpeg.
The rest of the libraries come from the ones provided by QtNX, and therefor we don't have to compile them ourselves at this stage.
Copy the generated nxssh executable to /usr/local/bin and you're done - have fun!
In combination with aewm
http://www.red-bean.com/decklin/aewm/ you can make a pretty nice login screen to your NX server - more later.
Update - screenshots:
Starting window:
Logging in:
Logged in with remote desktop:
Johan.