If you’re like me you have multiple machines all running at the same time (check this out to see how you can use some of that aggregate computing power to speed up your compile times). The problem becomes how to use all of those machines effectively. Do you give each machine a mouse, keyboard, and monitor? It works but it slows you down, you’re constantly moving to get to the keyboard and mouse and to see the monitor for another machine. It also requires an enormous amount of desk space. Do you buy a kvm switch and share a single mouse, keyboard, and monitor between the machines? This is somewhat less than ideal. You can’t see what you’re doing on one machine while working on another. There is no real coordination between the machines either. When you factor in the prices for a DVI kvm it really isn’t much cheaper than giving each machine its own accessories. The solution I’ve found is software-based and it is called Synergy.
Synergy allows you to share a single keyboard and mouse among a number of different machines. Those machines don’t even have to be running the same operating system! I have three machines and monitors set up with one for Linux, Windows XP, and Mac OS X. I share one keyboard and mouse among the machines using Synergy. You simply tell it the arrangement of your monitors and it will transfer keyboard and mouse input to another machine seamlessly as you reach the edge of the screen. That in and of itself is fantastic but on top of that Synergy will sync screensavers and, more impressively, will sync clipboards between machines (and operating systems). You read that right, you can copy on one machine (say running Linux) and paste what you copied onto another machine (say running Mac OS X).
For those running Mac OS X or Linux I highly suggest QuickSynergy. It allows you to more easily set up Synergy. For the Windows folks there is no QuickSynergy for you but the official Synergy software is fairly easy to set up.