やるきなし

2023/01/09 18:37 / Barrier on Wanland

XWayland の試用を続けているが,Barrierが動いてくれない.なお,Barrier は Synergy 1.9 からの fork で (Synergy は現在有料),キーボードとマウスを複数の PC で共有する Server と Client.

https://github.com/debauchee/barrier/issues/109 で Wayland support の議論が行われていたらしいが,https://github.com/input-leap/input-leap/issues/1414 にあるとおり主要な開発者(p12tic と shymega)が Barrier の fork である input-leap に移動したらしくて,とはいえ

As of mid-2022, there is no expected completion date for Wayland support.

とのこと.なお本家の Synergy については https://github.com/symless/synergy-core/issues/4090 のとおり 2014年頃から Support するする言っておきながら未だサポートしていない様子.

images/1002.png

現状では waynergy が Wayland サポートの Barrier client として動作するので,

という構成は可能.Wayland 環境で Barrier server を動かせないのがちょっと厳しいけど.あとは rkvm を利用するアプローチもあるけど,Rust で書かれていて openssl 周辺の問題で Debian GNU/Linux unstable (sid) 環境ではコンパイルできない(sid の openssl は 3.0.7-1).

waynergy を sid 環境でコンパイルするには以下ぐらい.

% PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig meson setup -Dprefix=`pwd`/local build
The Meson build system
Version: 1.0.0
Source dir: /home/myn/work/waynergy
Build dir: /home/myn/work/waynergy/build
Build type: native build
Project name: waynergy
Project version: 0.0.15
C compiler for the host machine: ccache cc (gcc 12.2.0 "cc (Debian 12.2.0-13) 12.2.0")
C linker for the host machine: cc ld.bfd 2.39.90.20230104
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /usr/bin/pkg-config (1.8.0)
Run-time dependency wayland-client found: YES 1.21.0
Run-time dependency xkbcommon found: YES 1.4.1
Run-time dependency libtls found: YES 3.7.0
Program wayland-scanner found: YES (/usr/bin/wayland-scanner)
Build targets in project: 5

waynergy 0.0.15

  User defined options
    prefix: /home/myn/work/waynergy/local

Found ninja-1.11.1 at /usr/bin/ninja
% cd build
% ninja install

これで /home/myn/work/waynergy/local/bin/waynergy とかが install される.なお,wayland-client.pc 等 pkgconfig のファイルが /usr/lib/x86_64-linux-gnu/pkgconfig/ にあるので,PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig で場所を指定している.

あとは

./waynergy -c 192.168.1.xxx -e -t

とかでサーバに接続する../waynergy/dev/uinput にアクセスする権限を要求するので,調整が必要.ちょっと危険だけど手元ではchmod 666 /dev/uinputした.

追記(2023/1/9)

rkvm は以下で compile 出来なかったのだけど,

  cargo:warning=build/expando.c:4:24: error: pasting "RUST_VERSION_OPENSSL_" and "(" does not give a valid preprocessing token
  cargo:warning=    4 | #define VERSION2(n, v) RUST_VERSION_##n##_##v
  cargo:warning=      |                        ^~~~~~~~~~~~~
  cargo:warning=build/expando.c:5:23: note: in expansion of macro ‘VERSION2’
  cargo:warning=    5 | #define VERSION(n, v) VERSION2(n, v)
  cargo:warning=      |                       ^~~~~~~~
  cargo:warning=build/expando.c:10:1: note: in expansion of macro ‘VERSION’
  cargo:warning=   10 | VERSION(OPENSSL, OPENSSL_VERSION_NUMBER)
  cargo:warning=      | ^~~~~~~
  exit status: 1

一旦 Cargo.lock を削除して以下で,

% rm Cargo.lock
% PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig cargo build --release

が compile できる.あとは鍵/証明書を作成して example/ の下のサンプルを参考に server/client を起動すればよいのだけど,

[ 4400.612998] input: Logitech M280/320/275 as /devices/virtual/input/input462
[ 4400.615160] input: Topre Corporation HHKB Professional as /devices/virtual/input/input463
[ 4400.616645] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/virtual/input/input464
[ 4400.617821] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/virtual/input/input465
[ 4400.618878] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/virtual/input/input466
[ 4400.619870] input: HDA Intel PCH Headphone as /devices/virtual/input/input467
[ 4400.620981] input: HDA Intel PCH Headset Mic as /devices/virtual/input/input468
[ 4400.621923] input: USB2.0 HD UVC WebCam: USB2.0 HD as /devices/virtual/input/input469
[ 4400.622296] input: Asus WMI hotkeys as /devices/virtual/input/input470
[ 4400.622787] input: GDX1301:00 27C6:01F0 Touchpad as /devices/virtual/input/input471
[ 4400.623144] input: GDX1301:00 27C6:01F0 Mouse as /devices/virtual/input/input472
[ 4400.623504] input: ELAN9008:00 04F3:2772 Stylus as /devices/virtual/input/input473
[ 4400.623875] input: ELAN9008:00 04F3:2772 UNKNOWN as /devices/virtual/input/input474
[ 4400.624117] input: ELAN9008:00 04F3:2772 UNKNOWN as /devices/virtual/input/input475
[ 4400.624421] input: ELAN9008:00 04F3:2772 as /devices/virtual/input/input476
[ 4400.624696] input: PC Speaker as /devices/virtual/input/input477
[ 4400.625134] input: DP-2 as /devices/virtual/input/input478
[ 4400.625420] input: Video Bus as /devices/virtual/input/input479
[ 4400.625865] input: Power Button as /devices/virtual/input/input480
[ 4400.626484] input: Power Button as /devices/virtual/input/input481
[ 4400.626941] input: Sleep Button as /devices/virtual/input/input482
[ 4400.629118] input: Lid Switch as /devices/virtual/input/input483
[ 4400.629940] input: AT Translated Set 2 keyboard as /devices/virtual/input/input484
[ 4400.631582] input: rkvm as /devices/virtual/input/input485

のように /sys/devices/virtual/input/inputXXX/ に仮想デバイスが生成され,これを掴むように gdm 側を調整する必要がありそうな雰囲気で(gdm が起動する前に rkvm server/client を起動しておく),そこで断念.

追記(2023/1/18)

waynergy だけど,動かしたまま Display の解像度を変更すると混乱する様子(前の解像度を想定したまま waynergy が動き続ける).

Related articles