キーボード, マウスをLinux, Mac間で共有したく、debauchee/barrierというツールを導入しました。いつもどおりArchWikiを探しましたがfork元のSynergyの記事しかなく内容も薄いものだったので、日本語の薄い記事を投稿するモチベになりました。
ArchWikiの代わりにこちらの記事が参考になりそのままパクりました。
https://zenn.dev/sunaemon/articles/81471b9431ff2c
コンテンツ力のある方でtwitter上でFFのFFでした。赤の他人です。
導入
barirerではキーボードを触る方をサーバ, その信号を受け取る方をクライアントと呼びます。それぞれbarriers, barriercコマンドが仕事をし、それらのGUIとしてbarrierコマンドがあります。
この記事では参考文献と逆にmanjaro linuxをサーバ, macをクライアントとします。
暗号化
LANにキー入力流すのは危険ですし、--enable-cryptoがデフォルトでONなので秘密鍵とそのfingerprintをつくり交換してあげます。今回はサーバ側でsshdを動かしssh上でfingerprintを交換しました。
サーバ側 linux
mkdir -p ~/.local/share/barrier/SSL/Fingerprints
cd ~/.local/share/barrier
openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ./SSL/Barrier.pem -out ./SSL/Barrier.pem
echo "v2:sha256:$(openssl x509 -fingerprint -sha256 -noout -in ./SSL/Barrier.pem|cut -d= -f2)" > ./SSL/Fingerprints/Local.txt
クライアント側 mac
mkdir -p ~/Library/Application\ Support/barrier/SSL/Fingerprints
cd ~/Library/Application\ Support/barrier
openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ./SSL/Barrier.pem -out ./SSL/Barrier.pem
echo "v2:sha256:$(openssl x509 -fingerprint -sha256 -noout -in ./SSL/Barrier.pem|cut -d= -f2)" > ./SSL/Fingerprints/Local.txt
scp ./SSL/Fingerprints/Local.txt octaltree@coorie.local:~/.local/share/barrier/SSL/Fingerprints/TrustedClients.txt
scp octaltree@coorie.local:~/.local/share/barrier/SSL/Fingerprints/Local.txt ./SSL/Fingerprints/TrustedServers.txt
サーバ側のホスト名coorie.localをavahiで名前解決していますがip指定で十分です。
サーバ
まずインストールします。sudo pacman -S barrier-headless barrier
次に設定ファイルをつくります。/usr/share/doc/barrier-headless に設定の雛形があるのでそれをベースに書いてもいいですし、GUIから設定して吐き出す形でもいいです。GUIはconfig作るのに使ったら役割は終えたので消して大丈夫です。sudo pacman -Rsn barrier
barriersのサービス化とあわせて私はこうなりました。
~/.local/share/barrier/.barrier.conf
今回manjaroのホスト名がcoorieでmacがElectricalSpeedwagon.localです。localまで正確にホスト名にあわせる必要がありました。
section: screens
coorie:
halfDuplexCapsLock = false
halfDuplexNumLock = false
halfDuplexScrollLock = false
xtestIsXineramaUnaware = false
preserveFocus = false
switchCorners = none
switchCornerSize = 0
ElectricalSpeedwagon.local:
halfDuplexCapsLock = false
halfDuplexNumLock = false
halfDuplexScrollLock = false
xtestIsXineramaUnaware = false
preserveFocus = false
switchCorners = none
switchCornerSize = 0
end
section: aliases
end
section: links
coorie:
right = ElectricalSpeedwagon.local
ElectricalSpeedwagon.local:
left = coorie
end
section: options
relativeMouseMoves = false
screenSaverSync = true
win32KeepForeground = false
clipboardSharing = true
switchCorners = none
switchCornerSize = 0
end
何故XDG_CONFIG_HOMEじゃないのか
歴史的経緯のようです。この未解決issueでバグとして扱われています。暗号化用ファイルにXDG_DATA_DIR使うのでついでという見方もあります。
https://github.com/debauchee/barrier/issues/230
~/.config/systemd/user/barriers.service
[Unit]
Description=Barrier keyboard & mouse sharing software
After=network.target
[Service]
PassEnvironment=DISPLAY
ExecStart=/usr/bin/barriers --no-restart --no-daemon
Type=simple
ProtectHome=read-only
ProtectSystem=true
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
サーバ実行
systemctl --user daemon-reload
systemctl --user enable barriers
systemctl --user start barriers
クライアント
インストールbrew install barrier
すると/Applicationsや/opt/homebrewにインストールされるようです。
ホスト名あっていればクライアント側の設定は必要ないようでクライアントを実行すれば繋がるはずです。
local ipv4=`traceroute coorie.local 2>/dev/null| awk '{print $2}'`
/Applications/Barrier.app/Contents/MacOS/barrierc --no-daemon --no-restart $ipv4
サーバ側でavahiが動いていたのでLAN内で名前解決しています。
macディス・感想
私はThinkPadにlinuxを入れることが常でAppleは食わず嫌いだったため、社用という機会にはじめてMacを選択しました。結果として、windowsとlinuxの悪いとこ取りという偏見をエアプでなく体感することが出来ました。そもそも今回のキーボード共有導入の動機がusb端子を持たないからでした。
まず、ソフト面でlinuxと同等の環境を構築するのに苦労しました。
- dotfiles管理している設定項目を一つずつ検索してシステム設定GUIから設定した
- キーリピートレートだけGUIから見つからずdefaultsコマンドから設定した
- 170ms 60Hzを常用しているのでMacの設定項目だとこれを15msで割った数値を小数で設定した
- swapcapsがシステム設定にあるがaltが無いのが致命的
- brewでターミナルいれてterminfoがついてこない
- ディレクトリや権限の制約
- Docker対応M1対応
- ウィンドウマネージャなど不慣れな環境でマウスへの依存度が高い
- 右クリックにcontrolが必要
数日使うとソフトに加えてハード面でも不便さを痛感しました。
- トラックパッドで指の腹が擦れて痛い 3000番のやすりかなにか?
- グレア液晶 px単位の芸術家ではないので文字が認識できれば十分
- 重い
- USB type-A端子がなくキーボードを刺せない
キーボードは浅いものの感触は嫌いではありませんでした。キーボードが不満でDellのXPS13を返品させてもらったことがあり、それよりは我慢すれば慣れるキーボードでした。
導入した感想ですが継続して使っていけるかわかりません。というのもsshで良い気がしたりネイティブほどの操作感がないためです。例えば操作対象切り替えがマウスであったりalt対応であったりです。私にとってmacに対する銀の弾丸ではありませんでした。
ディスから入りましたが、ネット経由でマルチプラットフォーム上で仮想デバイスとして振る舞うソフトウェアという点で面白いツールなので試してみることをオススメします。