Read BUILDING for how I built nxproxy and USAGE for how to use nx proxy. All the object files, binaries, and archives that I used are included. BUILDING You can get the current sources for nxcomp and nxproxy here: http://www.nomachine.com/sources.php Copy the tarballs into this directory. nxcomp depends n libpng, libjpeg, and libz. libz coes with OS X but you need the other libraries. The easiest way is from MacPorts: http://www.macports.org/ After building libpng and libjpeg copy libpng.a and libjpeg.a into the approriate powerpc or i386 sub directory. Now run ./nxcomp.build and ./nxproxy.build and if you want to have a unversal binary repeat the above steps on a Mac of the other architecture. Copy the nxproxy binaries you made into this directory naming them nxroxy.i386 and nxproxy.ppc then run ./lipo.sh and you will have a nxproxy binary in this directory that will run on ppc and intel Macs. USAGE the nxproxy you built is statically linked with everything it needs and the only synamic libraries it needs are provided by Apple. You can install it where ever you like, preferably in your PATH. I use /usr/local/bin: # install nxproxy /usr/local/bin A typical way to use this is to run a remote X11 application via ssh port forwarding. This is what you do. You will need a few terminal emulator windows open. Fire-up X11.app on the local machine: local$ xlsclients On the local machine ssh into the remote machine and forward the tcp port you will use: local$ ssh -R4008:localhost:4008 remote Port 4008 is used for DISPLAY=:8 on the proxy X11 server you will run. If you will be using a different DISPLAy, adjust the port in the obvious way. Now on the local machine you need to learn the magic coolkie beng used by xauth: local$ xauth list :0 local.example.com/unix:0 MIT-MAGIC-COOKIE-1 123efa980d2cba234ef6f73deac810ff Copy the long string of hexedecimal digits and paste it into this command on the remote host: remote$ xauth add xauth add :8 . 123efa980d2cba234ef6f73deac810ff Now on the local host start up the 'client mode' nxproxy half of the communication: local$ nxproxy -S accept=127.0.0.1 :8 NXPROXY - Version 3.2.0 Copyright (C) 2001, 2007 NoMachine. See http://www.nomachine.com/ for more information. Info: Proxy running in client mode with pid '10038'. Session: Starting session at 'Fri Jun 6 12:23:27 2008'. Info: Waiting for connection from any host on port '4008'. Now you need to run the 'server mode' nxproxy half on the remote host. The client half you already have running timesout after around a minute so you need to do this shortly after the last command: remote$ nxproxy -C link=isdn connect=127.0.0.1 127.0.0.1:8 NXPROXY - Version 3.2.0 Copyright (C) 2001, 2007 NoMachine. See http://www.nomachine.com/ for more information. Info: Proxy running in server mode with pid '6094'. Session: Starting session at 'Fri Jun 6 12:24:15 2008'. Info: Connecting to remote host '127.0.0.1:4008'. Info: Connection to remote proxy '127.0.0.1:4008' established. Info: Connection with remote proxy completed. Info: Using ISDN link parameters 384/24/1/0. Info: Using agent parameters 5000/20/50/0/0. Info: Using cache parameters 4/4096KB/8192KB/8192KB. Info: Using pack method 'adaptive-5' with session ''. Info: Using ZLIB data compression 1/1/32. Info: Using ZLIB stream compression 6/6. Info: No suitable cache file found. Info: Listening to X11 connections on display ':8'. Session: Session started at 'Fri Jun 6 12:24:15 2008'. Instead of isdn you can use other values such as modem and adsl instead or even bitrates. Run nxproxy -h for the details about all of the options. You will now see this at the bottom of the local terminal window: Info: Accepted connection from '127.0.0.1'. Info: Connection with remote proxy completed. Info: No proxy cookie was provided for authentication. Info: Forwarding the real X authorization cookie. Info: Using ISDN link parameters 384/24/1/0. Info: Using cache parameters 4/4096KB/8192KB/8192KB. Info: Using pack method 'adaptive-5' with session ''. Info: Using ZLIB data compression 1/1/32. Info: Using ZLIB stream compression 6/6. Info: No suitable cache file found. Info: Forwarding X11 connections to display '/tmp/launch-yTCePf/:0'. Session: Session started at 'Fri Jun 6 12:24:15 2008'. Now on the remote host setup the DISPLAY environment variable: remote$ DISPLAY=:8; export DISPLAY Now you should be able to run X11 applications on the remote host and have them display on the local host: remote$ xlogo ^C A word of caution. With this setup nxproxy listens on port 4008 on the local host and on port 6008 on the remote host. You want to leave these ports closed in the firewall. All the communication you need is with unix domain sockets and over localhost. If OS X prompts you about alowing network connections, you can safely say to block all incoming connections and this setup will still work.