Virtual Network Computing (VNC)

Probably the most useful Open Source tool of all (ok, maybe is more useful), was originally created by the AT&T Research facility in Cambridge and is a remote display protocol that, despite being rather inefficient (something modern forks try to improve upon, but certainly still less than ), has the advantage of being very simple and require only very light clients (the binary is contained within just 230KB, and implementations can be downloaded on-the-fly from any browser).

includes a server (check the Sharing preference pane, it’s part of Remote Desktop).

Mac Screen Sharing

uses a variant of the protocol for its own screen sharing solution, and this article has some useful tweaks to the Leopard built-in client that I’m reproducing here for safekeeping:

Displaying a browser:

defaults write ShowBonjourBrowser_Debug 1

Displaying additional controls: (pre-10.5.5)

defaults write \
'NSToolbar Configuration ControlToolbar' -dict-add 'TB Item Identifiers' \

In 10.5.5, decided to get stingy again, so this workaround became necessary. Which is kind of ridiculous.

When rolled around, they broke even more of the UI, but it’s still possible to set display quality via a preference (via):

defaults write controlObserveQuality n

…gives you:

  1. black and white
  2. grayscale
  3. 8-bit color
  4. 16-bit color
  5. full color


Not all of these are related to , but has been used for things like multi-machine (i.e., having two different machines side by side and move the mouse/keyboard across machines) for a long time now and is better understood by most people, so I’ve lumped everything here:

Category Date Link Notes
Servers May’12 VirtualGL Finely tuned OpenGL encapsulation (with server-side hardware acceleration).
Older Schnitz Remote Remote for reverse connections.
Alkit VNC allows single-window sharing.
RealVNC the original (and still the reference) implementation. Also has the most efficient client (old homepage)
Vine Server native server, supporting multiple simultaneous remote sessions
Ultra VNC Single-Click Server a nice, customizable server that helpdesk staff can e-mail to someone in need of help.
MetaVNC an intriguing way to share single windows
Reinventing the wheel Apr’11 noVNC A decent, secure websockets/@[email protected] client.
Apr’10 Ajax VNC A “Clientless” VNC solution implemented with canvas and, regrettably, a server.
Clients (Mac) Dec’08 The best client out there in terms of speed and international keyboard support.
VNCDimension partial support for non-US keyboards (but no dead keys) and very fast graphical updates.
“Chicken of the VNC”:SourceForge:projects/cotvnc/ No international key support, works OK with the built-in server.
VNCThing read for more (and a link to the source code).
Workspot modified VNC Tried it once.
Clients (Other) Jun’12 pyvnc A ctypes client that uses libvnc directly.
May’09 vnc2dl a client that renders on a DisplayLink device.
Older FlashVNC a Flash viewer
MochaVNC for and Pocket PC, supports post-3.3 procotol versions and has a built-in tunneler.
PVNC for the (has some ARM code, if I remember correctly)
DirectVNC framebuffer-based clients.
Palm VNC with server-side scaling extensions
Enhanced Full-Screen Clients
SSHVNC a combined client
Tools Aug’11 Gitso A reverse VNC connection tool for support purposes.
Older VNC Snapshot can take screenshots of a section of the display and save them in format
VNCj a nice way to serve AWT applications
Vnc2swf a Flash recording tool, which now has an editing tool available.
LibVNCServer also has a client library
perlVNC fear.
PyVNC – a client
VNC Reflector”:SourceForge:projects/vnc-reflector/
Multi-Machine (a2b) Older SynergyKM Synergy packaged as a preference pane, as it should. Verified working in 2008 under .
Synergy a platform-agnostic package focused on precisely this application – is a very nice repackaging.
osx2x does it all, to X or
x2vnc X to
win2vnc to , not multi-monitor friendly, (another version which is multi-monitor friendly)
“x2x”:FreshMeat:projects/x2x/ the original concept, for completeness


My current (minimalist) Xvnc startup file for Linux, so that I remember that unsetting SESSION_MANAGER is the right way to avoid complaints from gnome-session:

$ cat .vnc/xstartup
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-session &

This page is referenced in: