I am, as my wife repeatedly points out to me, a bit of a clean freak for everything in the house — except my desk. My desk is constantly covered in bits of paper, books, note pads, various gadgetry, and other little knickknacks.
Unfortunately, that also includes a number of monitors on top of the desk, the two towers beneath it, two keyboards, and two mice. And since I'm such a messy desk person, the more space I have for clutter, the better. The second keyboard/mouse duo on the desk does not help matters very much at all.
So it was with great interest that I found a project called Synergy+ that will share the one keyboard and mouse that exists in the keyboard tray, with both computers. The original Synergy project has been abandoned, but Synergy+ was forked from the original Synergy project, and work is progressing on it.
The cool thing about Synergy+ is that it is cross-platform. That means that your primary computer can be Windows, Linux, or OS X and so can any of the other computers that you want to share the keyboard and mouse with. And the really nice thing is there is no need for additional cables or KVM switches — if the computers are networked together, that is all the connection required.
Synergy+ works on a client-server architecture. So the primary workstation, to which the keyboard and mouse are physically (or wirelessly) attached acts as the Synergy+ server, whereas the other systems will act as the Synergy+ clients.
To start with, on the server, you need to create a synergy.conf configuration file that indicates what the clients' hostnames are, and where their monitors are in physical relation to the server's monitor. For instance, we have two computers: server and client. On the computer named server, synergy.conf would contain:
left = client.host.com
right = server.host.com
This indicates that the client system is positioned to the left of the server. So when the mouse hits the left-most edge of the screen on the server, it will trigger a mouse movement (and receiving input from the mouse and keyboard) to the client's right-most edge of the screen. If you wanted to add a third system in there, you could; just update the configuration file and position it accordingly in the links section.
On the server, you will want to start Synergy+ using:
$ synergys —config /path/to/synergy.conf
On the client, all you need to do is tell the Synergy+ client executable the name of the server:
$ synergyc server.host.com
Of course, none of this is useful if you have to use a keyboard to start the client, or ssh into the box in order to launch Synergy+. So on the client system, you can add the following to start synergyc at the gdm login screen (so that you are able to type in your login credentials) to the /etc/gdm/Init/Default file, at the very end, but before the final exit command:
### start the synergy+ client
while [ $(pgrep -x synergyc) ]; do sleep 0.1; done
You can do the same with the server, if running Linux, but start the synergys executable instead.
Synergy+ works really well. It still has some minor issues, but it is very functional and reliable for the most part (I have experienced one or two spontaneous exits of the client in the last few weeks). Most importantly, it's allowed me to reclaim the space taken up by the extra keyboard and mouse for the second computer, and fill it with more meaningful random clutter.
Delivered each Tuesday, TechRepublic's free Linux and Open Source newsletter provides tips, articles, and other resources to help you hone your Linux skills. Automatically sign up today!
Vincent Danen works on the Red Hat Security Response Team and lives in Canada. He has been writing about and developing on Linux for over 10 years and is a veteran Mac user.