If you haven’t heard of the open-source project called Synergy, and use more than one computer side-by-side, you need to check it out. In a nutshell, it unifies individual (and often disparate) computers; connecting monitors, keyboards, mice, and “clipboards” via the network.
It claims to support practically any version of Windows (from 95 to XP, and I’m personally running it on Vista), as well as Mac OS X 10.2+ and *nix (primarily tested on Linux).
When I posted about my office setup, I included a picture of my 3 monitor setup, plus my MacBook Pro. Thanks to Synergy, I essentially have four monitors. Moving my mouse off the left edge of my Windows desktop instantly transfers it to the right edge of my Mac’s desktop, along with my keyboard focus and clipboard. It only supports plain-text clipboard contents for Windows <-> Mac, but 9 times out of 10 that’s sufficient. (Submit a patch with the fix, if you feel brave!)
One thing is that configuring Synergy sucks. On the Mac (and *nix) you have to know how to edit a .conf text file. In Windows, it’s hardly better. You have to reference your computers by hostname, which causes me grief when I connect my Mac via VPN and sometimes get an arbitrary hostname assigned to me. Also, in Vista, you must always run the application as an administrator, or else no dice.
Here’s a handy guide to configuring Synergy 1.3.1–focused on my particular setup, and assuming you keep most of the defaults. We won’t get too “fancy” here. If you want more advanced information, check out the links under the Documentation section on the SourceForge page.
Windows (Running Synergy as a server)
Start Synergy, and select “Share this computer’s keyboard and mouse (server)”, then click “Configure”

The first step is to define your “screens”. A screen is really just “a computer”. In my case, a single PC has 3 monitors - that’s one “screen”. Click the super-fancy-awesome plus sign button (”+”) under the “Screens:” list box to add a new screen. Synergy recommends you use the computer name as the screen name, unless you’ve got a good reason not to, I agree with them–but for the server setup it doesn’t really matter. As far as I can tell, though, it’s purely cosmetic since you can use the “aliases” to map hostnames to a friendly name. Enter the screen name (your computer’s hostname) and optionally any aliases. It’s important to reiterate that both “screen name” and “aliases” are used to identify remote computers via the incoming/outgoing network connection.

I left all the other options as default (just to get something going). But essentially you can control which modifier keys are also sent over the network (or not), as well as “dead zones” on the screen that shouldn’t swap the mouse out.
Each computer needs to know about every other computer, so you’ll have to add a new “screen” for every box you want to hook up. Go ahead and do that, I’ll wait. Ready? Wishing they had some sort of “auto-discovery”? Me too. The next step is to “link up” your screens. You basically have to tell Synergy how they are positioned/connected. In my case, my laptop is directly to the left (and a little below) my main PC “screen” (remember, all 3 count as one to Synergy–it’s about “desktops” really).
Click “[New Link]” in the “Links” listbox and enter your information (explained in a sec) — then click the “+” button (genius!) to add it. Wash, rinse, and repeat until you’ve got it all set up.

The reason this is so complex is that you can configure portions of screens that link to portions of other screens. In the above example, I’m configuring the entire left side of my work PC (0-100%) to map to the entire edge of my Mac (0-100%) — on the Mac I configure which edge (left/right/etc) lines up with my work PC. Why would I want anything different? Consider the following extreme configuration:
![]()
In this “screen” layout, I would map:
- 0-50% of the left of Screen 3 to 0-100% of Screen 1
- 50-100% of the left of Screen 3 to 0-100% of Screen 2
- 0-100% of the bottom of Screen 2 to 0-60% of Screen 4
- etc.
Make sense? I hope so, because it’s a real pain to configure. And each “screen” has to be configured to match — so on Screen 1’s configuration, 0-100% of the left side goes to 0-50% of Screen 3. So much can be done here in terms of auto-config, it’s not even funny.
The good news is that you’re basically done. You can test your configuration by clicking “Test” in the main dialog, which simply starts the server allowing you to cancel it. I recommend using the “Test” mode until you’ve got it all set up, because otherwise it runs in the background and there’s no way to change the configuration without restarting the application. (Fun.) You can also configure some advanced options (like network port numbers, and auto-start options).
Mac (Running Synergy as a client)
This is the fun part. The UI on Windows at least abstracts out the configuration file describing the screens–no such luck on a Mac. And on a Mac, of all places! Synergy on the Mac includes a sample .conf file, which really helps. Here’s an example .conf file - it gets more advanced than this, but for basic stuff you don’t need anything more. Notice that I’m not specifying any percentages because they’re all 0-100%. If you want to get more complicated, I recommend reading the documentation.
section: screens
LERCHWORKPC:
maclerch.local:
end
section: links
# lerchworkpc is to the right of maclerch.local
maclerch.local:
right = LERCHWORKPC
LERCHWORKPC:
left = maclerch.local
end
Basically I’m identifying all the screens involved: LERCHWORKPC and maclerch.local. Then I’m associating them: to the right of maclerch.local is LERCHWORKPC, and to the left of LERCHWORKPC is maclerch.local. Nuff said.
To run Synergy in client mode, bring up Terminal (the Mac’s saving grace: a command-prompt), and drag-and-drop “synergyc” from the install location (by install I mean “where you unpackaged the files”) onto Terminal. Add “-f” and the name of the computer running the Synergy server, and press Return.
Drag “synergyc” from here… (assuming you installed it here)
![]()
… to here. So your command looks something like this:
![]()
The -f option tells Synergy not to run as a daemon. I prefer it because I can minimize Terminal and forget about it - but bring it back up to view the output or kill the app with CTRL+C easily if I want to. You can leave off “-f” to run it as a daemon and stop the process later, if you like.
That’s it, run the synergy client app and you’re all set up. Well I should rephrase. I’m all set up. Everybody has different configurations, so hopefully this will be a good stepping stone for you to get yours working.


Leave a comment