複数のPCを1つのマウス&キーボードで操作する神ソフトウェア【Synergy】
皆さんは複数PCを使っていますか?
自分は研究室でサーバ以外に2台のデスクトップPCを使用してます。(+laptop)
各PCにモニターを1枚づつ割り当てているのですが、わざわざキーボードとマウスをそれぞれ用意したくないですよね、だからと言って隣にあるのにリモート操作もなんだかな...
自分の理想図はこんな感じです。
このように使いたい人は案外いるのか、ちゃんと実現するソフトウェアがあります。
その名も「Synergy」!以下に公式ページを貼っておきます。
公式のページを見れば分かる通りこのソフトウェアはPC間、それもOSも飛び越えて1つのキーボードとマウスで操作することが出来ます。
ただし条件があって、このソフトを使うには、PC達が同じローカルネットワークに所属していなければなりません。(相手のIPアドレスを知る必要)
でも...あれ?buy synergy? $29.00??
公式見るとシェアウェアっぽい?でも、githubにOSS版もある??
ここら辺はよくわかりませんが、githubのソースからビルド出来たので、備忘録的に残しておきます。
ちなみに今回は、Ubuntu 16.04のみ対象にしています。
まず最初に、Ubuntuでは
$ sudo apt install synergy
でインストールできますが、バージョンが古く、かなり不安定です。今まで、これ使ってて、あまりにも不安定なので今回ソースからビルドした感じです。
Synergyのリポジトリはこちら。
github.com
まずはリポジトリをcloneしましょう。自分はcloneはいつもDownloadフォルダでしてるので、その感じで解説していきます...笑
$ cd /home/(username)/Download $ git clone https://github.com/symless/synergy-core.git $ cd cd synergy-core
次に依存関係のライブラリをインストールします。
$ sudo apt install qtcreator qtbase5-dev cmake make g++ xorg-dev libssl-dev libx11-dev libsodium-dev libgl1-mesa-glx libegl1-mesa libcurl4-openssl-dev libavahi-compat-libdnssd-dev qtdeclarative5-dev libqt5svg5-dev libsystemd-dev
最後に、ビルド用のフォルダを作成して、ビルドをします。
$ mkdir build $ cd build $ cmake .. $ make
すると、build/binフォルダ内にいくつか実行ファイルが生成されていると思います。
この中で実際に使用するのは、synergy-coreです。以降、ずっと使うファイルなので、Downloadの中のbuildフォルダに残さず、特別なフォルダにいれましょう。
ここではユーザホーム直下にusrフォルダを作成してそこにsynergy-coreをいれます。
$ mkdir /home/(username)/usr $ mkdir /home/(username)/usr/bin $ mkdir /home/(username)/usr/synergy_setting $ cp ./synergy-core /home/(username)/usr/bin/
自分はこのあとusrにPATHを通しましたが、後述のcronを使うなら必要なかったです。
ここまでの、手順を繋げる全てのPCで行ってください。
実行コマンドは2種類あります。
synergy-core --client とsynergy-core --serverです。
なぜ2種類あるかというと、serverはマウスとキーボードが刺さっているPC、clientはそれ以外のPCと差別化しないといけないからです。
ここで以下のような2台のPCと2個の状況を想定します。
設定ファイルでは、各PCに名前を付けてPC同士の位置関係を記述します。今回の例では、右のPCをpc_right、左のPCをpc_leftとします。
今回は、pc_rightをserverとして扱ってみます。(つまり、右にマウスキーボードをさす)
synergyの設定ファイルを作成します。設定ファイルはserverのみ必要なので、serverのPCで実行してください。
settingフォルダを作成したので、そこに保存します。
$ sudo vim /home/(username)/usr/synergy_setting/synergy.prof
設定ファイルは以下のように記述します。
section:screens pc_right: pc_left: end section:links pc_right: left = pc_left pc_left: right = pc_right end
section:screensには繋げる各PCの名前(自由に決めて良い)を定義します。
section:linksには定義したPC達の位置関係を書いていきます。
ここまでで出来れば、コマンドを実行するだけで動かせるようになっているはずです。
(pc_rightで以下の操作を実行)
$ cd /home/(username)/usr/bin $ synergy-core --server --config /home/(username)/usr/synergy_setting/synergy.prof --name pc_right
(pc_leftで以下の操作を実行)
$ cd /home/(username)/usr/bin $ synergy-core --client --name pc_left (pc_rightのipアドレス)
うまくいけば、pc_rightのマウスをpc_leftの画面へ持っていくと、操作ができるようになっています...!!
ただ、これだけでは各PCを起動した後、毎回コマンドを打たなければなりません。
そこで、cronを使用してPCの起動時に自動的にsynergyが実行されるようにしましょう。
(pc_rightで以下の操作を実行)
$ crontab -e #編集画面で一番下に @reboot /home/(username)/usr/bin/synergy-core --server --config /home/(username)/usr/synergy_setting/synergy.prof --name pc_right
(pc_leftで以下の操作を実行)
$ crontab -e #編集画面で一番下に @reboot /home/(username)/usr/bin/synergy-core --client --name pc_left (pc_rightのipアドレス)
うまく設定が出来れば、各PCが起動時に自動的にsynergyを実行し、1つのマウスキーボードセットで複数のPCを操作できるようになります。
2台のPCと2台のモニターをMac bookから操作...なんて夢のようなことも可能になります...スバラシ...
間違っている点や不明な点があったらコメントで教えてください!!