Once upon a time… I sat beneath a person who tried to show me something on his GNU/Linux desktop. As he noticed, he needs to copy a password from his Windows machine (was it OS X?), which was standing close, I waited for him to copy and paste by using his eyes. But hey: He just moved his mouse across the boarder of his screen and the mouse pointer appeared on the screen of the other computer. There he marked something, copied it to the clipboard by using the very keyboard, moved his mouse back to the first screen and pasted the content from the clipboard. I am neither talking about two screens attached to one computer, nor about a kvm device. You can probably imagine, how surprised I was…
The solution to this magic is rather simple. It is called “Synergy” – a program available for GNU/Linux, Windows, OS X. It is a server/client application. Given the situation that you are mainly using one computer – let’s say your desktop, but also need access to your notebook, or even notebooks, standing left and/or right of your desktop screen, you make your desktop the synergy server. This is rather simple: Install the packages “synergy” and for your convenience “quicksynergy” – a graphical configuration wrapper – by calling “aptitude install synergy quicksynergy” or just Synaptic on EVERY machine.
Now let’s get it running: First, start “Quicksynergy” on your main computer (the desktop in this case) from your menu (you should find it under Accessories or Utilities). Click on “Settings” to make sure, that the checkbox “Keep… running” is not checked, as you probably don’t want to see Quicksynergy the whole time. Now go back to “Share”. You see you computer in the middle and four text boxes around it. The magic of Synergy is, that you need to know the hostname of the computer that wants to connect to your computer as Synergy relies on this information. If you are unsure, just run a “hostname” on the console of the other machine. I repeat: Don’t use fancy names, don’t use the ip address here – you need the hostname of the machine that will connect to your computer.
In my case my notebook is called “hasung”. Now decide, where the connecting computer/notebook is placed. In my case “hasung” is right of my desktop screen. Therefore I enter the term “hasung” into the text field labeled “Right”:
Afterwards clicking “Start” will launch the Synergy daemon and fork the program into the background.
Now you have to find out the ip address of your main computer, as the computer/notebook beneath needs to connect to it. If you don’t know how to do this: open a console and run “ifconfig | grep inet”. If you are on a typical local area network, it will start with something like “192.” or “10.”. Just check it out or ask somebody who knows. In my case the ip address is “192.168.1.2″.
Now lay your fingers on the keyboard of your second machine – hopefully for the last time for today. You have two ways of connecting here – either by using quicksynergy or by using the command line. If you want a gui, start Quicksynergy, make sure, that the checkbox “Keep… running” is not checked, on the “Settings” tab, then click on the tab “Use” and enter the ip address of your main machine, where the synergy daemon is already running. In my case “192.168.1.2″:
Click start and you should be up and running! Check this by using the mouse of your main computer and move the mouse pointer beyond the (right or left) screen frontier. The mouse pointer should appear on the other screen. You are done!
Network issues in Ubuntu Hardy
With Ubuntu Hardy suddenly strange things happened with synergy, as something on the network layer of the kernel has changed. The best workaround I know so far, is to run (quick)synergy on the client with sudo, so it does not get interrupted that often. As I am a heavy console user, I just run
$ sudo synergyc 192.168.1.2
from a terminal window instead of quicksynergy. If you have a better hint, let me know.
Synergy opens a tcp port on the main machine. If you are using a firewall or even iptables manually you have to allow acccess to this port. Synergy uses port “24800″ by default. So if you know what you are doing, a “iptables -A INPUT -p tcp –dport 24800 -j ACCEPT” might help you.
Staying on the same network
Actually your computers don’t have to be in the same network, but: The client machine has to be able to access the synergy tcp port on the master. Imagine the following: You are bringing your notebook to your company. It uses wifi while your desktop uses a cable connection. As your administrator does not trust wifi connections, he split the networks, so no direct connection from the wifi network to the cable network is possible. In this case you have to deal with your administrator. But trust me: synergy is not a reason for breaking company security rules
From a security point of view, synergy is … let’s say… simple. There is no password protection, no security layer, no encryption. The only access control is the hostname of the client, which can, of course simply be forked. What does that mean? It means two things: First: People could annoy you by using your hostname on their machine and connect to your synergy instance. Counter measure? Ban them by using a local firewall, if you know, how. Second: People on the network might be able to sniff your data (mouse gestures, key strokes, content of the clipboard). Counter measures? Use a ssh tunnel! I won’t explain this here, but might already have a clue, what I am talking about.
If your (quick)synergy forked into the background and you feel, that somehow it all does not work, open a terminal and run “pkill synergy”or “sudo pkill synergy”. This should stop all running instances.
As might already have noticed, you can even connect more machines. Feel free to place machines to the left and right, even upper and lower side of your main screen at the same time.
So that’s for now. Feel free to post your experiences here, and yes: I am also using synergy in combination with hosts running Windows and/or OS X, though configuration on GNU/Linux with Quicksynergy is the best method I have seen.