ラズパイをキーボード・マウス共有サーバにする【Barrier】
Windows、Mac、Linuxでキーボードとマウスを共有できるオープンソースプロジェクトのBarrierを使ってみたところ非常に便利だったのでラズパイへインストールして各PCで共有するまでの手順を書いておきます。
もくじ(Index)ラズパイ関連の目次へ戻る(工事中)
Barrierとは
https://github.com/debauchee/barrier Open-source KVM software
オープンソースで開発されている、同一ネットワーク上にあるサーバに接続したキーボードとマウスを他のPCで共有する目的で作られたソフトです。
同様の製品はSynergy(有償、Windows,MacOSX,Linux)、Logicool Flow(ロジクールの対応機器のみ、Windows,Mac)、Mouse without Borders(Windowsのみ)等があります。barrierはSynergyからForkしたプロジェクトとのことです。
対応OS
バイナリでサポートされているOSは64bitとRaspbianです。32bitOSでもソースからビルドすれば動くようですがサポートされていません。
- Windows10 64bit
- MacOS 64bit
- Linux 64bit
- Rapsbian(ビルドが必要)
Barrierを使う時の注意
Barrierを使う上での注意点をあげてみました。
- ネットワークを経由するので遅延が発生する
→ ゲーム等レスポンスを重視する用途には向きません。 - 無線LANだと途切れる可能性あり
→ なるべく有線LANがいいでしょう。 - サーバPCのスペックが低いとレスポンスが悪くなる
→ RaspberryPiZeroWHでは厳しいです。 - サーバPCが起動していないとキーボードとマウスは一切使えない
→ そういう仕組みなのでここはどうしようもありません。すぐ起動するPCあるいは24時間稼働のPCがベストです。 - サーバPCでもモニターが必要
→ 現在のバージョンではサーバPCにもモニターがないと起動できません。
こちらのissueでも上がっており将来的には解消される可能性もあります。 - Windows10をClientにした時、UACの切り替え時と復帰時にカーソルがサーバに戻ってしまう。(数秒操作できず)
→ 「Barrier」→「Change Settings」を開き、下記の画像のように変更すると対処できます。
ラズパイをサーバにする。
Windows,Mac,Linux等、色々なPCをサーバとしてBarrierを使ってみたのですが、省電力で起動も早いラズパイがサーバとして適任だと思いセットアップしてみました。
RaspberryPiをサーバにする時の課題と解決法
①モニターについて
Barrierは現在のところモニター無しではインストール及び実行ができません。(CUIで実行しようとしても有効なDisplayが無いとエラーが出ます。)また、サーバーのモニターも共有する範囲に設定しないと動きません。
ラズパイのGUI画面でも共有したいという方は別ですが、通常は不要だと思います。そのため色々試行錯誤した結果、、、
小さい液晶使えばいいんじゃない!?という結論に至りました。
試しに、1.3inch 240×240のSPI接続の液晶を使用したところ、解像度を最小の80×80まで下げると「ほぼモニターレス」として扱うことができました。小さいIPS液晶のセットアップについてはラズパイに小さいLCDを付けてデスクトップを表示するを見てください。
セットアップ手順
まずはBarrierをインストールします。インストールはGitHubのWikiにありますので最新情報はそちらを確認してください。
ビルドしてインストール
下記のコマンドを実行してビルドとインストールを行います。
sudo apt update && sudo apt upgrade
sudo apt install git cmake make xorg-dev g++ libcurl4-openssl-dev \
libavahi-compat-libdnssd-dev libssl-dev libx11-dev \
libqt4-dev qtbase5-dev
git clone https://github.com/debauchee/barrier.git
cd barrier
./clean_build.sh
cd build
sudo make install
バイナリは/usr/local/binにインストールされ、メニューのアクセサリにBarrierというアプリが増えます。
BarrierをGUIで設定する
ここがちょっと面倒なのですが、液晶の解像度を大きめ(1024×768)にしてVNCサーバ経由で設定するのがいいと思います。Barrierを起動するとセットアップウィザードが起動するので設定をします。(細かいところは別記事を作成予定)
設定ファイルの保存
設定が完了したらメニューの「Barrier」→「Save configuration」を選択して「~/barrier.conf」へ保存しておきます。
クライアント側の設定を行う。
クライアントでサーバのIPアドレスを指定して設定を行います。(こちらも別記事で作成予定)
自動起動の設定
DISPLAYの認識が上手く行かずsystemdだと動かないようなのでLXDEの自動起動を利用します。(もしsystemdで上手く動かす方法を知っていたら教えてください。。。)
①起動シェルを新規作成
vi ~/barrierstart.sh
②起動シェルの内容
GUIで作成したbarrier.confを読み込んで起動します。
★YOUR_SCREEN_NAMEは、環境に合わせて書き換えてください。(通常はHOSTNAMEが入るはず)
#!/bin/bash
/usr/local/bin/barriers -f --debug INFO --no-restart --name YOUR_SCREEN_NAME --enable-crypto -c /home/pi/barrier.conf --address :24800
③シェルに実行権限を与える。
シェルを作成したら実行権限を与えて、正常に起動するかテストしてください。
chmod +x ~/barrierstart.sh
./barrierstart.sh
④autostartの書き換え
~/.config/lxsession/LXDE-pi/にあるautostartの末尾に1行追加します。
vi ~/.config/lxsession/LXDE-pi/autostart
●追加する内容
@lxterminal -e /home/pi/barrierstart.sh
⑤再起動して動作確認
ラズパイ再起動して、デスクトップにlxterminalウィンドウが出て実行されているか確認してください。
⑥解像度を戻してVNCサーバをOFFにする。
ここまででサーバ側のセットアップは完了です。設定が完了したら/boot/config.txtを書き換えて解像度を80×80に戻し、VNCサーバを使わないのであればOFFにしておきましょう。
sudo vi /boot/config.txt
sudo raspi-config nonint do_vnc 1
sudo reboot
自動起動完了
すべての設定が終わると下記の動画のように共有することができます。
おわりに
実際に使ってみるとネットワークさえしっかりしていれば、ネットやブログを書く程度であれば遅延は気にならず普通に使えます。まあ、細かい使いづらさはありますが、ログイン画面でも利用可能なのでセキュリティ面も安心できます。
興味が出たら是非使ってみてください。