Synergy est un outil permettant de contrôler plusieurs ordinateurs avec un seul clavier et une seule souris. De plus, il permet de partager le presse-papier : pratique pour copier-coller d’un ordinateur à l’autre ! Mais en plus, c’est super simple !

Il y a un serveur et n clients. C’est le serveur qui possède le clavier et la souris.

synergy

Tout d’abord, sur chacun des postes, il faut installer le paquet synergy.

Ensuite, sur le serveur, il faut créer un fichier de configuration ~/.synergy.conf, extrêmement simple :

section: screens
   rom-laptop:
   rom-desktop:
end
section: links
   rom-desktop:
       left = rom-laptop
   rom-laptop:
       right = rom-desktop
end

Ici, rom-laptop est mon portable (le serveur) et rom-desktop est mon fixe (le client). C’est le nom de la machine, que l’on peut connaître avec :

echo $HOSTNAME

La section screen définit la liste des machines, et la section links définit leur position relative.

Ensuite, côté serveur, on tape :

synergys

Et sur chaque client :

synergyc ip_du_serveur

Les clients peuvent être lancés avant le serveur, ils vont tenter de se reconnecter 1 seconde après, puis 3 secondes après, puis 5, puis 15, puis 30 et enfin toutes les minutes. Ils survivent à la déconnexion du serveur, et tentent de se reconnecter en suivant la même règle.

Pour arrêter la connexion, sur le serveur :

killall synergys

et sur les clients :

killall synergyc

Pour aller plus loin :

Éviter le changement d’écran involontaire
Après quelques minutes d’utilisation, on se rend compte que lorsqu’on est sur le PC de gauche, et qu’on va à la droite de l’écran (pour déplacer la scrollbar de Firefox en plein écran par exemple), on se retrouve involontairement sur l’écran de droite, c’est très embêtant.
Mais c’est très facile d’y remédier, il suffit d’ajouter l’option :

section: options
   switchDoubleTap = 400
end

Cela permet de ne changer d’écran qu’en cas de double-contact en moins de 400ms avec le bord de l’écran.

Démarrer automatiquement
Sous GNOME (à adapter pour les autres environnements), il suffit de rajouter au fichier ~/.gnomerc la commande du serveur ou du client selon le cas.
Pour le serveur :

echo 'synergys' >> ~/.gnomerc

Pour le client :

echo 'synergyc ip_du_serveur' >> ~/.gnomerc

Décaler les écrans
Deux écrans côte à côte ne sont pas forcément alignés et ils n’ont pas forcément la même hauteur.
Par exemple l’écran de mon fixe est un 5:4 et il est un peu surélevé, celui de mon portable est un 16:10 et il est plus bas.
Pourtant, quand je déplace la souris d’un écran à l’autre, je voudrais que la souris reste à la même hauteur. Aucun problème, on peut passer des arguments (start,end), exprimés en pourcentage de l’écran, entre 0 et 100 inclus :

section: screens
    rom-laptop:
    rom-desktop:
end
section: links
    rom-desktop:
        left(35,100) = rom-laptop(0,85)
    rom-laptop:
        right(0,85) = rom-desktop(35,100)
end
section: options
    switchDoubleTap = 400
end

Ici, la partie supérieure de mon portable ([0%;85%]) est en face de la partie basse de mon fixe ([35%;100%]).
Remarque : la relation n’a pas besoin d’être symétrique, mais c’est plus logique qu’elle le soit :)

Démarrer chacun des clients à distance
Si l’on ne veut pas démarrer synergy au démarrage, on souhaiterais pouvoir le faire rapidement sans passer sur chacun des PC pour exécuter une commande. Avec une connexion SSH correctement configurée (par clés de préférence), on peut automatiser le lancement de tous les clients :

synergys
ssh rom-desktop synergyc rom-laptop
ssh un-autre-pc synergyc rom-laptop

(rom-laptop est défini dans /etc/hosts)

Sécuriser la connexion
Synergy ne crypte pas les communications, donc tout passe en clair sur le réseau (enfin, du moins pour ceux qui connaissent la clé WPA de votre réseau, si vous êtes en wifi).
Pour crypter, il suffit de faire passer la connexion dans un tunnel SSH. Pour cela, sur chacun des clients :

ssh rom-laptop -fCNL24800:localhost:24800 synergyc localhost

Ce qui est embêtant, c’est qu’il faut décrypter sur chacun des postes la clé privée, et donc c’est problématique pour démarrer synergy au démarrage du système.

Un grand merci à Génération Linux qui m’a fait découvrir cet outil maintenant indispensable.