J'installe donc synergy via apt-get
sur la framboise (qui sera le serveur), j'y crée le fichier de configuration synergy.conf
suivant:
section: screens raspberry: halfDuplexCapsLock = false halfDuplexNumLock = false halfDuplexScrollLock = false xtestIsXineramaUnaware = false switchCorners = none switchCornerSize = 0 elite: halfDuplexCapsLock = false halfDuplexNumLock = false halfDuplexScrollLock = false xtestIsXineramaUnaware = false switchCorners = none switchCornerSize = 0 end section: aliases end section: links raspberry: left = elite elite: right = raspberry end section: options relativeMouseMoves = false screenSaverSync = true win32KeepForeground = false switchCorners = none switchCornerSize = 0 end
ce qui fait que le serveur (raspberry
) est à gauche et le client (elite
) à droite.
Sur le raspberry, enfin, je lance le serveur:
$ synergys -f --name raspberry -c synergy.conf
et sur le client:
$ synergy -f -name elite <IP du raspberry>
Notez l'option -f
pour que synergy ne passe pas en tâche de fond afin de voir les messages de débogage ... et ça été utile !
Car, bien sûr, ça ne fonctionne pas.
WARNING: failed to connect to server: Connection refused ....
Bon, que dit le serveur ? Ben que les versions des protocoles du client et du serveur sont incompatibles (1.8.8 versus 1.5).
En effet, un:
$ synergyc --version synergyc 1.8.8, protocol version 1.6
et
$ synergys --version synergys 1.5, protocol version 1.5
le confirment.
Donc la version de synergy dans le dépôt stretch de la Debian ARM installée sur notre Raspberry s'avère trop ancienne. Donc, idée géniale: récupérons la version 1.8.8 et compilons gaiement !
Ouai ... ben pas aussi simple à faire qu'à dire. Voici donc tout ce que j'ai du faire pour que la compilation fonctionne (la plupart des solutions ayant été glanées à droite et à gauche sur Internet, le reste à l'expérience)
Récupération du code source:
Voici le lien sur github.
Installation des paquets:
$ sudo apt-get install cmake \ libcurl4-openssl-dev libx11-dev libssl1.0-dev
Oui, le dernier paquet est ancien mais libssl-dev
provoque une erreur de compilation.
J'ai également installé libgtest-dev
et googletest
pour essayer de faire passer - sans succès - les étapes de test que j'ai fini par (spoiler) zapper purement et simplement (voir plus loin). Donc inutile de les installer.
Modification du chemin d'accès des includes
Modifier la ligne 199 du fichier CMakeLists.txt
en remplaçant /usr/local/include
par /usr/include
comme c'est d'ailleurs indiqué en commentaire:
else() # not-apple # add include dir for bsd (posix uses /usr/include/) set(CMAKE_INCLUDE_PATH "${CMAKE_INCLUDE_PATH}:/usr/include")
Configuration:
$ ./configure
Notez qu'en cas de problème, il faut vider le cache avant de relancer la commande configure
sinon les modifications ne seront pas prises en compte. Pour ce faire, supprimer le fichier CMakeCache.txt
.
Suppression des étapes de tests de Makefile2
:
Comme je l'ai dit plus haut, le make
ne fonctionnera pas suite à cause des étapes de tests. Je prends le parti de sauter les tests (sur l'air de "ça va marcher").
Pour ça, je commente les parties suivantes du fichier CMakeFiles/Makefile2
:
- lignes 1226 à 1229 (
src/test/CMakeFiles/gmock.dir/all
) - lignes 1263 à 1266 (
src/test/CMakeFiles/gtest.dir/all
) - lignes 1327 à 1330 (
src/test/CMakeFiles/gtest.dir/all
) - lignes 1391 à 1394 (
src/test/CMakeFiles/gtest.dir/all
)
Compilation:
$ make preinstall
et voilà, les binaires sont dans le sous-répertoire bin
.
$ bin/synergys --version synergys 1.8.8, protocol version 1.6
On relance le client et le serveur et cette fois, ça marche ...
enfin presque: mon client Ubuntu 17.10 étant sous wayland, on voit bien le passage du focus d'un PC à l'autre, le clavier fonctionne (mais en qwerty) quant au pointeur de la souris, il reste là où il était (pas de menus non plus, contextuels ou pas)... A suivre, donc ...
Bonne année !