®om's blog { un blog libre }

Synergy : contrôlez plusieurs PC avec une seule souris et un seul clavier

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.

puls_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 du système, on souhaiterait 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 chiffre 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 chiffrer, il suffit de ne faire écouter le serveur que sur localhost et de faire passer la connexion dans un tunnel SSH.

Pour limiter à localhost :

synergys -f -a localhost

Pour cela, ouvrir un tunnel du serveur vers chacun des clients :

ssh client -CvR24800:localhost:24800 synergyc -f localhost

Ou, à l’inverse, ouvrir un tunnel de chacun des clients vers le serveur :

ssh server -CNvL24800:localhost:24800
synergyc -f localhost

Ce qui est embêtant, c’est qu’il faut déchiffrer la clé privée, ce qui 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.

Commentaires

Jopa

C’est vrai que Synergy est vraiment un bon petit outil !!!

Il existe un petit utilitaire graphique qui simplifie encore plus la configuration : Quicksynergy

http://www.jopa.fr/index.php/2008/11/24/partage_clavier_souris_synergy/

compte0

je connaissais synergy mais merci pour tout les options. Une petite remarque, sur ton réseau local tu peux utiliser des noms de domaines en .local, genre rom-desktop.local (avahi doit être activé et c’est moins propore aue de modifier le hosts, mais plus simple).

Par contre chiffré le flux synergy par ssh , c’est cool quand tes postes sont sur un unix-like, mais sur windows, comment on fait???

Guizmo.7

Merci pour cet outil, il a l’air très pratique !

(Juste une petite erreur : dans la partie démarrer automatiquement, il manque un s à “echo ‘synergys’ >> .gnomerc”. Ce n’est pas grave du tout mais ça empêche le copié-collé pour les feignants …)

®om

Pour chiffrer le flux par ssh, sous Windows tu as putty (mais je connais peu, je sais que ça marche).

Merci Guizmo.7, j’ai rectifié (et j’ai rajouté ~/ devant .gnomerc aussi).

Merci pour les explications, c’est terrible de passer d’un écran à un autre comme ça. J’adore ;-)

Sympa l’article sur un logiciel qui m’est indispensable tous les jours au bureau. Je l’utilise sur 3 ordi en simultané ;-)

jean-luc

Bonjour,

D’abord félicitation pour l’article. Je suis utilisateur de ce produit vraiment formidable. Mon problème est le suivant :

j’ai 3 pc. Ils sont disposés comme suit :

Client2----Client1-----Serveur

Je me retrouve donc avec deux pc a gauche

le passage entre le serveur et le client 1 et vice et versa se fait sans problème. Par contre, dès que je vais sur le client 2 je suis bloqué. Ma souris et mon clavier reste obstinément attachés à ce client.

Seule solution : arrêter synergy sur ce client pour pouvoir retrouver la main

Quelqu’un a -t-il une idée ?

Merci d’avance

jean-luc

Je me réponds à moi même. Cela peux toujours servir. en fait, dans le paramétrage serveur, il faut deux lignes par machine, une pour définir la machine qui est à droite, une autre pour la machine qui est à gauche et ceci même si ces deux machines sont de chaque coté d’un client. (Ce qui était mon cas).

Poster un commentaire

Nom : (requis)
E-mail : (optionnel, non publié)
Site web : (optionnel)
Quelle est la 3e lettre du mot blog ? (antispam)

Les commentaires sont formatés en markdown.