インストール - マウス・キーボード共有ソフトウェア

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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の場合
    1. [プログラムの追加と削除](または[アプリと機能])で、Synergyをアンインストールする。
      この時、"アプリとその関連情報がアンインストールされます"というメッセージが表示されるので、再度、[アンインストール]ボタンを押下する。
    2. [アプリを終了する必要があります]メッセージ、および、アプリを自動的に終了させるかどうかを尋ねられるので、これを選択する。
    3. 次に、regeditを実行して、以下に示すレジストリキーを削除する。(存在する場合)
      • HKEY_CURRENT_USER\Software\Symless
      • HKEY_CURRENT_USER\Software\Synergy
      • HKEY_LOCAL_MACHINE\SOFTWARE\Synergy

    4. 以下のディレクトリが存在する場合は、削除する。
      • C:\ProgramData\Symless
      • C:\ProgramData\Synergy
      • C:\ProgramData\Synergy v2
      • %USERPROFILE%\AppData\Local\Synergy
      • %USERPROFILE%\AppData\Local\Symless

    5. 次に、SystemConfig.iniファイルを削除する。
      この時、以前に保存した設定は失われる。
      C:\Program Files\Synergy\SystemConfig.ini

    6. 最後に、Windowsを再起動する。

  • Linuxの場合
    1. パッケージ管理システムを使用して、Synergyを削除する。
    2. 次に、以下のコマンドを実行して、Synergyの設定を削除する。
      • rm -rf ~/.config/Symless/
      • rm -rf ~/.config/Synergy/
      • rm -rf ~/.synergy/
      • rm -rf ~/.symless/

    3. 次に、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を自動起動する場合は以下の手順を行う。

  1. まず、[スタート]ボタンを押下して、起動時に実行するソフトウェアを右クリックする。
  2. コンテキストメニューから[その他] - [ファイルの場所を開く]を選択して、ソフトウェアのショートカットが保存されているディレクトリを開く。
    もし、[ファイルの場所を開く]オプションが表示されない場合、そのソフトウェアは起動時に実行できないことを意味する。
  3. 次に、[Super]キー + [R]キーを同時押下して、shell:startupと入力、[OK]ボタンを押下する。
  4. [スタートアップ]ディレクトリが開くので、ソフトウェアのショートカットが保存されているディレクトリから、ショートカットを[スタートアップ]ディレクトリにコピーする。


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
    1. Barrierをアンインストールする前に、Barrierを終了する。
      Barrierを起動したままでアンインストールした場合、ほとんどのBarrierに関するファイルが残ってしまうため注意すること。
    2. Barrierのサービスを停止するため、管理者権限でPowershellまたはコマンドプロンプトを起動して、net stopコマンドを実行する。
      これは、sc stopコマンドでは非同期で実行されるため、sc deleteコマンドが失敗して、アンインストール後にbarrierd.exeが残るからである。
    3. net stopコマンドを実行する。
      net stopコマンドは、Barrierのサービスが停止するまで同期で実行するため、sc deleteコマンドが成功する。
    4. [設定] - [アプリ]画面または[コントロールパネル] - [プログラムと機能]画面から、Barrierをアンインストールする。
    5. 次に、C:\Program Files\BarrierフォルダおよびC:\ProgramData\Barrierフォルダを削除する。
    6. C:\Users\<ユーザ名>\AppData\Local\Barrierディレクトリを削除する。
    7. C:\Users\<ユーザ名>\AppData\Local\Tempディレクトリに存在する"Barrier."から始まるファイル群を削除する。
    8. regeditを実行して、\HKEY_USERS\S-<Windows11の現在のビルド番号>\SOFTWARE\Debaucheeを削除する。
    9. %LocalAppData%\Barrierフォルダ(レジストリ設定、Barrierの設定ファイル、証明書、フィンガープリント)を削除する。
    10. 必要ならば、Barrierに関するファイヤーウォールのルールを削除する。

  • Linux
    1. まず、Barrierのインストールディレクトリを削除する。
      rm -rf <Barrierのインストールディレクトリ>
    2. 次に、Barrierの設定ファイルが存在するディレクトリを削除する。
      rm -rf ~/.local/share/barrier
      rm -rf ~/.config/Debauchee



ファイヤーウォールの設定

ファイヤーウォールのポート開放を行う。

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 <ログファイルのパス>