Synergy - Sharing keyboard and mouse across multiple systems

Table of Contents

1. Overview

Synergy is a software tool that allows networked computers to share a single keyboard and mouse. Synergy works on Linux, Windows 95/98/Me/NT/2000/XP), and Mac OS X 10.2 and higher.

Synergy allows cutting and pasting clipboards between systems – simply select and copy on one system, and paste on another.

2. Server

A single machine acts as the synergy server. This machine has a configuration file that defines the screen layouts to use.

My setup has 4 systems on my desk from left to right as follows:

  • legolas (dual boot Debian linux/Windows XP laptop)
  • gollum (Debian linux workstation)
  • sauron (Windows XP workstation)
  • gimli (dual boot Debian linux/Windows XP Eee PC)

synergy-screens.png

I use gollum every day and this machine is set up as my synergy server. The other machines power on and off as required. I use the single keyboard and mouse connected to gollum to access all of the machines simply by moving the cursor to the appropriate screen.

If my cursor is somewhere on gollum's screen and I move it off the left edge it ends up on the legolas laptop. Simply driving the cursor off the screen edge moves the keyboard and mouse focus to the next system.

If a system is missing (say sauron is off) then moving right from gollum goes directly to gimli.

Here is my configuration file on gollum that defines the screen layouts. This simply defines the four systems and how they are related to each other. You can position screens side by side, vertically, or whatever makes sense for your working environment.

~/.synergy.conf

section: screens 
  gollum:
  legolas:
  sauron:
  gimli:
end

section: links
  legolas:
    right = gollum
  gollum:
    left = legolas
    right = sauron
  sauron:
    left = gollum
    right = gimli
  gimli: 
    left = sauron
end

section: aliases
  legolas:
    saruman
end

section: options
  switchCorners = all
  switchCornerSize = 50
  screenSaverSync = true
end

3. Client

All of the other systems you want to connect to are clients. They run the synergyc client program and specify the name of the server as the single parameter.

After creating a server configuration file and starting the server on gollum you can run a synergy client on another machine simply with

synergyc gollum

4. Setup

4.1. Windows Setup

Download and install the synergy package from Sourceforge.

Start the synergy program from the desktop icon. To set this up as a client system select 'Use another computer's shared keyboard and mouse (client)' and enter the name of the server system (gollum in this example)

To autostart synergy on boot click the AutoStart... button and select When Computer Starts

Finally start the synergy client now by hitting the Start button.

4.2. Linux Setup

Install the synergy client and server code (the synergy package on Debian).

4.2.1. Gnome Desktop Environment

To get synergy set up before you log in you need to enable the synergy client when displaying the login screen and then kill it and restart it as the user that logs in.

This requires a few simple changes to the gnome gdm startup files as follows:

  1. Starting synergy for the login screen

    Edit the /etc/gdm/Init/Default file to start the synergy client for the initial login screen

    At the top of the file add the following three lines (replacing gollum with your server host name)

    /usr/bin/killall synergyc
    sleep 1
    /usr/bin/synergyc gollum
    
  2. Starting synergy in the user session

    Edit the /etc/gdm/Xsession file to kill any existing synergy client and start a new one for this user as follows:

    /usr/bin/killall synergyc
    sleep 1
    /usr/bin/synergyc gollum
    
  3. Cleanup

    It's a good idea to kill the synergy client when the session ends (but in case that fails we also kill it in the previous two sessions too)

    Edit the /etc/gdm/PostLogin/Default file to kill any synergy client when the user logs out.

    Add the following two lines to the top of the file:

    #+begin_src sh /usr/bin/killall synergyc sleep 1 #+end_src sh

    That's it - just logout and in again to try out your new setup.

Author: Bernt Hansen