Synergy
Synergy est un outil permettant de partager un clavier et une souris entre plusieurs machines, sans matériel particulier, et ce même si elles tournent sous des systèmes d'exploitation différents. L'objectif est de permettre de contrôler simplement plusieurs ordinateurs disposés les uns à côté des autres sur un bureau, chacun ayant son propre écran. L'un des ordinateurs joue le rôle de serveur, sur lequel sont branchés le clavier et la souris, tandis que les autres jouent le rôle de clients qui se connectent au serveur pour être asservis. Les éventuels clavier/souris des clients continuent à fonctionner normalement.
Synergy permet d'indiquer la position relative des machines et quand la souris sort d'un écran elle apparaît sur l'écran de l'ordinateur "voisin". Les presse-papiers sont aussi partagés, ce qui permet d'effectuer des copier/coller d'une machine à l'autre.
Sommaire
Installation
Vous pouvez installer le paquet synergy avec Pacman.
pacman -Syu synergy
Configuration
Créer un fichier /etc/synergy.conf sur le serveur (la machine possédant le clavier et la souris) à partir du /etc/synergy.conf.example fourni. Le fichier est assez simple à comprendre, organisé en plusieurs sections. Les machines peuvent être désignées par un nom de domaine plutôt que par une adresse IP, il suffit d'ajouter les correspondances adresse IP <-> nom de domaine dans /etc/hosts (du moins dans le cas où les machines ont toujours la même adresse IP).
La description complète (officielle) du fichier de configuration se trouve ici.
Exemple de fichier de configuration :
# Liste des machines section: screens ordi-haut: ordi-droite: ordi-bas: end # Liens entre les machines section: links ordi-haut: right = ordi-droite(0,52) down = ordi-bas(51,100) ordi-droite: left(0,52) = ordi-haut ordi-bas: up(51,100) = ordi-haut end
Les valeurs entre parenthèses indiquent quelle partie d'une machine est concernée, en pourcentage ; si rien n'est indiqué, la valeur par défaut est (0,100). Ces indications servent à ajuster la correspondance entre les écrans, quand ils n'ont pas la même taille et/ou ne sont pas disposés en face l'un de l'autre. Par exemple ici à droite de l'écran de ordi-haut se trouve le haut de l'écran de ordi-droite (qu'on suppose plus grand). Tout ça fonctionne avec des machines multi-écrans, l'ensemble des écrans d'un ordinateur étant considéré comme un écran unique pour ce qui est des correspondances.
Des options peuvent être ajoutées dans une section supplémentaire, tout est détaillé dans la documentation.
Sécurité
Accepter la connexion entrante sur le pare-feu
Il faut ouvrir le port 24800 sur le serveur.
Ainsi, si vous utilisez iptables, la règle suivante devrait permettre d'ouvrir le port sur l'interface eth0 (enlever le "-s <adresse-ou-nom-client>" pour laisser tout le monde se connecter) :
iptables -A INPUT -p tcp -i eth0 -s <adresse-ou-nom-client> --dport 24800 -j ACCEPT
Notes sur la sécurité
Synergy permet à un autre ordinateur de prendre le contrôle d'une machine cliente. Côté serveur c'est peut-être un peu moins grave mais si un client se connecte la souris peut alors sortir du serveur, ce qui est tout de même gênant. Attention donc si synergy est lancé hors d'un réseau local de confiance (et donc notamment en cas de lancement automatique).
ssh pourrait permettre de régler ce problème.
Utilisation
Lancement manuel
Pour lancer le serveur synergy :
synergys
Pour lancer un client synergy :
synergyc <nom-du-serveur>
Lancement automatique
Une possibilité est de placer les commandes dans .xinitrc.
Une autre est d'écrire un script permettant de lancer les commandes comme des services. Un service systemd est fourni avec le paquet pour le serveur synergy :
systemctl enable synergys
Touches utiles
La touche "Arrêt défilement" (par défaut) permet de verrouiller la souris dans l'écran courant. Parfois utile en cas d'utilisation d'une application en plein écran, un jeu par exemple.
Problèmes
Disposition des touches du clavier
L'utilisation du clavier pour écrire quelque chose sur les machines asservies ne tient pas compte de la disposition indiquée pour le clavier (ou alors synergy ne regarde pas au bon endroit) : si les deux machines sont configurées avec un clavier français, les textes tapés sur le clavier commun et affichée sur la machine cliente seront considérés comme tapés sur un clavier américain. Une solution est d'inclure explicitement une commande fixant la disposition du clavier dans le fichier .xinitrc de la machine client par exemple (il se pourrait qu'il existe des solutions plus élégantes) :
setxkbmap fr
Ou pour fixer automatiquement la disposition déjà configurée pour la machine :
setxkbmap $(setxkbmap -query | grep "^layout:" | awk -F ": *" '{print $2}')