インストール - マウス・キーボード共有ソフトウェア
概要
Synergy / 3およびBarrierは、ネットワークを介して複数のコンピュータ間でマウスとキーボードを共有するためのソフトウェア (Input Device Sharing Software) である。
これは、以下に示すような特徴がある。
- 1つのキーボードとマウスで複数のPCの操作
- 画面の端にマウスを移動させて、接続された別のPCの画面に自然にカーソルが移動する。
- これにより、複数のPCを使用する場合でも、物理的なキーボードやマウスの切り替えが不要になる。
- ネットワーク経由での動作
- SSLによる暗号化通信を採用しており、データの安全性が確保されている。
- また、パスワード保護機能により、許可されていない接続を防ぐことができる。
- クリップボードの共有等の追加機能
- クリップボードの共有機能も搭載されており、あるPCでコピーしたテキストや画像を別のPCにペーストできる。
- ドラッグ&ドロップによるファイル共有も可能であり、異なるOSのコンピュータ間でもスムーズにファイルを転送できる。
PCの配置関係や共有する機能の詳細な調整が可能である。
Windows、MacOS、Linux等の異なるOS間でも利用することが可能である。
Synergy
Synergyは有償ソフトウェアであるが、一部の機能 (通信の暗号化機能) を除いて、無償でも使用することができる。
パッケージ管理システムからインストール (非推奨)
Synergyのバージョンが古い場合があるため、非推奨である。
sudo zypper install libdns_sd qsynergy synergy
ソースコードからインストール
まず、Synergyのビルドに必要な依存関係のライブラリをインストールする。
# RHEL sudo dnf groupinstall "Development Tools" sudo dnf install epel-release cmake3 boost-static libcurl-devel openssl-devel libXtst-devel \ # Qt 5を使用する場合 qt5-qtbase-devel qt5-qtdeclarative-devel # Qt 6を使用する場合 qt6-qtbase-devel qt6-core-devel qt6-widgets-devel qt6-network-devel qt6-dbus-devel qt6-qtdeclarative-devel # SUSE sudo zypper install glib2-devel gdk-pixbuf-devel avahi-compat-mDNSResponder-devel dbus-1-devel libcurl-devel libnotify-devel \ libopenssl-devel libopenssl-1_1-devel libavahi-devel fixesproto-devel libportal-devel pugixml-devel \ libXrandr-devel libXext-devel libXfixes-devel libXinerama-devel libXi-devel libXtst-devel xextproto-devel \ libxkbcommon-devel libxkbfile-devel inputproto-devel recordproto-devel libSM-devel \ # Qt 5を使用する場合 libqt5-qtbase-common-devel libQt5Core-devel libQt5Gui-devel libQt5Widgets-devel libQt5Network-devel \ libQt5DBus-devel libqt5-linguist-devel # Qt 6を使用する場合 qt6-base-devel qt6-core-devel qt6-widgets-devel qt6-network-devel qt6-dbus-devel qt6-linguist-devel
- 各バージョンのソースコードからインストールする場合
- SynergyのGithubからソースコードをダウンロードする。
- ダウンロードしたファイルを解凍する。
tar xf synergy-core-<バージョン>.tar.gz
cd synergy-core-<バージョン>
- Synergyのビルドに必要なサブモジュールをダウンロードする。
git clone https://github.com/mohabouje/WinToast ext/WinToast
git clone https://github.com/google/googletest.git ext/googletest
git clone https://github.com/zeux/pugixml ext/pugixml
- Synergyをビルドおよびインストールする。
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<Synergyのインストールディレクトリ> ..
make -j $(nproc) または cmake --build . -j $(nproc)
make install または cmake --install .
git clone
コマンドを使用する場合git clone https://github.com/symless/synergy-core.git
cd synergy-core
- 最新安定版 :
git checkout master
- 最新開発版 :
git checkout vX.Y.Z
- Synergyをビルドおよびインストールする。
cd synergy-core && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<Synergyのインストールディレクトリ> ..
make -j $(nproc) または cmake --build . -j $(nproc)
make install または cmake --install .
Synergyの実行ファイルが存在するディレクトリに、以下のようなシェルスクリプトを作成する。
vi /<Synergyの実行ファイルがあるディレクトリ>/bin/synergy.sh
# /<Synergyの実行ファイルがあるディレクトリ>/bin/synergy.shファイル
#!/usr/bin/env sh
appname="synergy"
# use -f to make the readlink path absolute
dirname="$(dirname -- "$(readlink -f -- "${0}")" )"
if [ "$dirname" = "." ]; then
dirname="${PWD}/${dirname}"
fi
cd $dirname
# Initialize interpreter path
export PATH="$dirname:$PATH"
export LD_LIBRARY_PATH="$dirname/../lib64:${LD_LIBRARY_PATH}"
# Run Synergy binary
"${dirname}/${appname}" "$@"
Windowsの場合は、Githubにあるインストーラをダウンロードしてインストールする。
インストールした後、Synergyの設定を行う。
Synergyのアンインストール
- Windowsの場合
- [プログラムの追加と削除](または[アプリと機能])で、Synergyをアンインストールする。
この時、"アプリとその関連情報がアンインストールされます"というメッセージが表示されるので、再度、[アンインストール]ボタンを押下する。 - [アプリを終了する必要があります]メッセージ、および、アプリを自動的に終了させるかどうかを尋ねられるので、これを選択する。
- 次に、regeditを実行して、以下に示すレジストリキーを削除する。(存在する場合)
- HKEY_CURRENT_USER\Software\Symless
- HKEY_CURRENT_USER\Software\Synergy
- HKEY_LOCAL_MACHINE\SOFTWARE\Synergy
- 以下のディレクトリが存在する場合は、削除する。
- C:\ProgramData\Symless
- C:\ProgramData\Synergy
- C:\ProgramData\Synergy v2
- %USERPROFILE%\AppData\Local\Synergy
- %USERPROFILE%\AppData\Local\Symless
- 次に、SystemConfig.iniファイルを削除する。
この時、以前に保存した設定は失われる。- C:\Program Files\Synergy\SystemConfig.ini
- 最後に、Windowsを再起動する。
- [プログラムの追加と削除](または[アプリと機能])で、Synergyをアンインストールする。
- Linuxの場合
- パッケージ管理システムを使用して、Synergyを削除する。
- 次に、以下のコマンドを実行して、Synergyの設定を削除する。
rm -rf ~/.config/Symless/
rm -rf ~/.config/Synergy/
rm -rf ~/.synergy/
rm -rf ~/.symless/
- 次に、SystemConfig.iniファイルを削除する。
この時、以前に保存した設定は失われる。sudo rm -rf /usr/local/etc/Symless/SystemConfig.ini
Synergy 3
Synergy 3は、UIデザインが大幅に刷新されて、より直感的な操作が可能になった。
ウィザード形式の設定補助が追加されて、ビギナーでも簡単に設定できるようになっている。
また、接続の安定性も向上しており、Synergy 1では時々接続が切れる問題が報告されていたが、Synergy 3ではネットワークプロトコルが改善されており安定した接続を維持できる。
特に、Wi-Fi環境下での信頼性が大きく向上している。
TLS 1.3による暗号化が標準実装されて、Synergy 1では暗号化機能は別途設定が必要だったが、Synergy 3ではデフォルトで有効になっている。
クリップボード共有機能も強化され、より大きなサイズのデータや多様な形式のデータを扱えるようになった。
また、ドラッグ&ドロップによるファイル転送の信頼性も向上している。
一方で、Synergy 3は有料版のみの提供となり、以前のバージョンにあったOSS版は提供されていない。
Synergy 3はWaylandもサポートしているが、libeiライブラリが必要となることに注意する。
また、libeiライブラリをサポートしているDEについては、GNOME 46以降、あるいは、KDE Plasma 6.1以降が必要となることが多い。
以下に示すようなlibeiライブラリをサポートしていないLinuxディストリビューションにおいて、Synergy 3を使用する場合はXorgに切り替える必要がある。
- Ubuntu 22.04以前
- Linux Mint 21以前
- Fedora 38以前
- Debian 12以前
- RHEL 9 / Rocky Linux 9 / AlmaLinux 9以前
- CentOS Stream
Synergy 3のインストール
Synergyの公式Webサイトにアクセスして、Synergy 3をダウンロードする。
Synergy 3をインストールする。
# RHEL 9 - # SUSE sudo zypper install ./synergy-<バージョン>-linux-<Synergyのコードネーム>-x64.rpm
この時、GPGキーの署名に関する警告が出力される場合がある。
この警告を無視する場合は、[I]キーを入力する。
synergy-... (Plain RPM files cache): Signature failed ... Abort, retry, ignore? [a/r/i] (a):
Synergy 3のアンインストール
# RHEL 9 - # SUSE sudo zypper remove synergy
Barrier (非推奨)
2021年以降、Barrierの開発は止まっているため、非推奨とする。
パッケージ管理システムからインストール
まず、以下のコマンドを実行して、LinuxにBarrierをインストールする。
sudo zypper install barrier
次に、BarrierのGiHubにアクセスして、Windows向けのBarrierの実行ファイルをダウンロードしてインストールする。
インストール後、Barrierの設定を行う。
ソースコードからインストール
まず、Barrierをビルドするため、依存関係のライブラリをインストールする。
# RHEL (EPELリポジトリの追加が必要) sudo dnf groupinstall "Development Tools" sudo dnf install 'dnf-command(config-manager)' sudo dnf config-manager --set-enabled PowerTools sudo dnf install cmake3 libcurl-devel avahi-compat-libdns_sd-devel libX11-devel libXtst-devel desktop-file-utils openssl-devel \ qt5-qtbase-devel # SUSE sudo zypper install --type pattern devel_basis sudo zypper install libdrm-devel libglvnd-devel libICE-devel \ libcurl-devel avahi-compat-mDNSResponder-devel libXtst-devel libopenssl-devel \ libSM-devel libXinerama-devel libXrandr-devel Mesa-devel \ libQt5Core-devel libQt5Gui-devel libQt5Network-devel libqt5-qtbase-common-devel libQt5Widgets-devel
次に、BarrierのGiHubにアクセスして、Barrierのソースコードをダウンロードする。
ダウンロードしたファイルを解凍して、ビルド向けディレクトリを作成する。
# Tarballからビルドする場合 tar xf barrier-<バージョン>-release.tar.gz cd barrier-<バージョン>-release && mkdir build && cd build # Gitからビルドする場合 git clone https://github.com/debauchee/barrier.git barrier && cd barrier git submodule update --init --recursive ./clean_build.sh cd build
※注意
Tarballをダウンロードした時、Barrierディレクトリのext/gmockディレクトリ、ext/gtestディレクトリ、ext/gulrak-filesystemディレクトリが空の場合、
以下のモジュールのソースコードをダウンロードする必要がある。
# Tarballのモジュールをダウンロードする場合 wget https://github.com/google/googletest/archive/refs/tags/release-<バージョン>.tar.gz wget https://github.com/gulrak/filesystem/archive/refs/tags/<バージョン>.tar.gz tar xf googletest-release-<バージョン>.tar.gz tar xf filesystem-<バージョン>.tar.gz # Gitを使用してモジュールをダウンロードする場合 git clone https://github.com/google/googletest.git git clone https://github.com/gulrak/filesystem
Barrierのビルドに必要なソースコードを、Barrierディレクトリのext/gmockディレクトリ、ext/gtestディレクトリ、ext/gulrak-filesystemディレクトリにコピーする。
# Tarballのモジュールをダウンロードした場合 cp -r googletest-release-<バージョン>/googlemock <Barrierディレクトリ>/ext/gmock cp -r googletest-release-<バージョン>/googletest <Barrierディレクトリ>/ext/gtest cp -r filesystem-<バージョン>/* <Barrierディレクトリ>/ext/gulrak-filesystem # Gitを使用してモジュールをダウンロードした場合 cp -r googletest/googlemock/* <Barrierディレクトリ>/ext/gmock cp -r googletest/googletest/* <Barrierディレクトリ>/ext/gtest cp -r filesystem/* <Barrierディレクトリ>/ext/gulrak-filesystem
Barrierをビルドおよびインストールする。
# Tarballからインストールする場合 cmake -DCMAKE_INSTALL_PREFIX=${HOME}/InstallSoftware/Barrier -DCMAKE_BUILD_TYPE=Release .. make -j $(nproc) make install # Gitからインストールする場合 make DESTDIR=${HOME}/InstallSoftware/Barrier install
Barrierの起動スクリプトを作成する。
vi ~/InstallSoftware/Barrier/barrier.sh
# ~/InstallSoftware/Barrier/barrier.sh
#!/usr/bin/env sh
appname="barrier"
# use -f to make the readlink path absolute
dirname="$(dirname -- "$(readlink -f -- "${0}")" )"
if [ "$dirname" = "." ]; then
dirname="${PWD}/${dirname}"
fi
cd ${dirname}
# Initialize interpreter path
export PATH="${dirname}:${PATH}"
export LD_LIBRARY_PATH="/<Qtのインストールディレクトリ>/<Qtのバージョン>/gcc_64/lib:${LD_LIBRARY_PATH}"
# Run Barrier binary
"${dirname}/${appname}" "$@"
Barrierの起動スクリプトに実行権限を付加する。
chmod u+x ~/InstallSoftware/Barrier/barrier.sh
Barrierの実行に必要な依存関係のパッケージをインストールする。
sudo zypper install libdns_sd
Barrierのデスクトップエントリファイルを、~/.local/share/applicationsディレクトリに作成する。
# ~/.local/share/applications/Barrier.desktop [Desktop Entry] Type=Application Name=Barrier <バージョン> GenericName=Barrier Comment=Keyboard and mouse sharing solution Exec=/home/<ユーザ名>/InstallSoftware/Barrier/bin/barrier.sh Icon=/home/<ユーザ名>/InstallSoftware/Barrier/barrier Terminal=false Categories=Utility; Keywords=keyboard;mouse;sharing;network;share;
次に、BarrierのGiHubにアクセスして、Windows向けのBarrierの実行ファイルをダウンロードする。
KVMのゲストOSであるWindowsに、Barrierをインストールする。
Barrierのインストール完了後、Barrierの設定を行う。
Windowsにおいて、Barrierを自動起動する場合は以下の手順を行う。
- まず、[スタート]ボタンを押下して、起動時に実行するソフトウェアを右クリックする。
- コンテキストメニューから[その他] - [ファイルの場所を開く]を選択して、ソフトウェアのショートカットが保存されているディレクトリを開く。
もし、[ファイルの場所を開く]オプションが表示されない場合、そのソフトウェアは起動時に実行できないことを意味する。 - 次に、[Super]キー + [R]キーを同時押下して、
shell:startup
と入力、[OK]ボタンを押下する。 - [スタートアップ]ディレクトリが開くので、ソフトウェアのショートカットが保存されているディレクトリから、ショートカットを[スタートアップ]ディレクトリにコピーする。
Waylandの場合
Barrierは、Wayland上でにおいてはグラフィカルで起動することができない。
そのため、自動起動する場合は、コンソールまたはSystemdサービスユニットを作成して実行する必要がある。
コンソールから通常起動する場合、以下に示すコマンドを実行する。
# ゲストOS側 (クライアント側) barrierc --name <クライアントのスクリーン名> \ --display <ディスプレイ番号> \ -f <サーバのIPアドレスまたはホスト名>:<ポート番号> \ --disable-crypto --daemon
コンソールから自動起動する場合は、~/.config/autostart/Barrier.desktopファイルを以下に示す内容で作成する。
# ~/.config/autostart/Barrier.desktopファイル
[Desktop Entry]
Type=Application
Name=StartBarrier
Exec=bash -c 'barrierc --name <クライアントのスクリーン名> --display <ディスプレイ番号> -f <サーバのIPアドレスまたはホスト名>:<ポート番号> --disable-crypto --daemon
Icon=dialog-scripts
Systemdサービスユニットとして起動する場合、/etc/systemd/system/barrier.serviceファイルを以下に示す内容で作成する。
これは、X11が:0にあると仮定している。
SystemdサービスユニットではマルチユーザでBarrierが使用できないため、ユーザサービスを使用する。
※注意
Systemdサービスユニットとして、スーパーユーザでBarrierを実行することによりセキュリティ上の懸念が存在する。
ログに記録する前にBarrierを使用する必要がある場合(DMで使用する場合)は、この方法が唯一の選択肢である。
ログイン画面でBarrierを使用する必要が無い場合は、デスクトップエントリファイルを作成して自動起動することを推奨する。
# /etc/systemd/system/barrier.serviceファイル
[Unit]
Description=Barrier Client daemon
After=network.target
[Service]
User=<ユーザ名>
Group=<グループ名>
ExecStart=barrierc --name <クライアントのスクリーン名> --display <ディスプレイ番号> -f <サーバのIPアドレスまたはホスト名>:<ポート番号> --disable-crypto --debug INFO
Restart=always
[Install]
WantedBy=multi-user.target
Barrierのアンインストール
- Windows
- Barrierをアンインストールする前に、Barrierを終了する。
Barrierを起動したままでアンインストールした場合、ほとんどのBarrierに関するファイルが残ってしまうため注意すること。 - Barrierのサービスを停止するため、管理者権限でPowershellまたはコマンドプロンプトを起動して、
net stop
コマンドを実行する。
これは、sc stop
コマンドでは非同期で実行されるため、sc delete
コマンドが失敗して、アンインストール後にbarrierd.exeが残るからである。 net stop
コマンドを実行する。net stop
コマンドは、Barrierのサービスが停止するまで同期で実行するため、sc delete
コマンドが成功する。- [設定] - [アプリ]画面または[コントロールパネル] - [プログラムと機能]画面から、Barrierをアンインストールする。
- 次に、C:\Program Files\BarrierフォルダおよびC:\ProgramData\Barrierフォルダを削除する。
- C:\Users\<ユーザ名>\AppData\Local\Barrierディレクトリを削除する。
- C:\Users\<ユーザ名>\AppData\Local\Tempディレクトリに存在する"Barrier."から始まるファイル群を削除する。
- regeditを実行して、\HKEY_USERS\S-<Windows11の現在のビルド番号>\SOFTWARE\Debaucheeを削除する。
- %LocalAppData%\Barrierフォルダ(レジストリ設定、Barrierの設定ファイル、証明書、フィンガープリント)を削除する。
- 必要ならば、Barrierに関するファイヤーウォールのルールを削除する。
- Barrierをアンインストールする前に、Barrierを終了する。
- Linux
- まず、Barrierのインストールディレクトリを削除する。
rm -rf <Barrierのインストールディレクトリ>
- 次に、Barrierの設定ファイルが存在するディレクトリを削除する。
rm -rf ~/.local/share/barrier
rm -rf ~/.config/Debauchee
- まず、Barrierのインストールディレクトリを削除する。
ファイヤーウォールの設定
ファイヤーウォールのポート開放を行う。
sudo firewall-cmd --permanent --add-port=24800/tcp または sudo firewall-cmd --permanent --zone=libvirt --add-port=24800/tcp sudo firewall-cmd --reload
SUSEの場合および上記のコマンドで接続できない場合は、以下の設定を行う。
まず、/usr/lib/firewalld/services/barrier.xmlファイルを作成する。
(このファイルは不要の可能性があることに注意すること)
sudo vi /usr/lib/firewalld/services/barrier.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Synergy</short>
<description>Share a mouse and keyboard on KVM.</description>
<port protocol="tcp" port="24800"/>
</service>
次に、/usr/lib/firewalld/zones/libvirt.xmlファイルにおいて、
</zone>
タグの上部に<port port="24800" protocol="tcp"/>
を追記する。
sudo nano /usr/lib/firewalld/zones/libvirt.xml
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
<!-- ...略 -->
<port port="24800" protocol="tcp"/>
</zone>
最後に、上記の設定を有効にするため、ファイアーウォールを再読み込みまたはPCを再起動する。
または、PCを再起動する。
sudo firewall-cmd --reload sudo systemctl restart firewalld または sudo shutdown -r now
コンソールの使用
# Barrier Client barrierc --daemon --name <クライアントのスクリーン名> <サーバのIPアドレス> # Barrier Server barriers --daemon --address <クライアントのIPアドレス> --name <クライアントのスクリーン名> \ --config <Barrierの設定ファイルのパス> # Synergy Micro Client # Wayland向け waynergy --host <サーバIPアドレス> --name <クライアントのPC名> --logfile <ログファイルのパス>