Raspberry Pi Connectの画面共有は、モニタを複数つないでいても、ブラウザに映るのはそのうちの1枚だけです。別のモニタを見たいときに切り替えるスクリプトを、raspi25に置きました。
#!/bin/sh
# without argument: cycle through outputs / with argument: switch to specified output (e.g., rpi-connect-screen-switch HDMI-A-1)
S="$XDG_RUNTIME_DIR/rpi-connect-wayvnc-ctl.sock"
if [ -n "$1" ]; then
exec wayvncctl --socket="$S" output-set "$1"
else
exec wayvncctl --socket="$S" output-cycle
fi
Raspberry Pi Connectの画面共有は、裏でwayvnc(Wayland用のVNCサーバ)が動いています。wayvncには、動作中の設定を外から変えるwayvncctlというコマンドがあり、制御用のUNIXソケット経由で指示を送ります。
S=... の行:Raspberry Pi Connectが起動したwayvncの制御ソケットの場所です。ユーザごとのランタイムディレクトリ($XDG_RUNTIME_DIR、たいてい/run/user/1000)にあります。wayvncctlを引数なしで使うと別の場所を見に行くので、--socketで指定していますoutput-cycleで、共有する画面を次のモニタに切り替えます。2枚なら実行するたびに交互になりますoutput-set HDMI-A-1のように、モニタ名を指定して切り替えますexec:シェルをwayvncctlに置き換えて実行します。終了コードもそのまま呼び出し元に返ります画面共有しているユーザで実行します($XDG_RUNTIME_DIRが必要なので、別ユーザやsudoでは動きません)。SSHで入っても、同じユーザなら大丈夫です。
rpi-connect-screen-switch.sh # 次のモニタへ
rpi-connect-screen-switch.sh HDMI-A-2 # HDMI-A-2へ
モニタ名はoutput-listで確認できます。
wayvncctl --socket="$XDG_RUNTIME_DIR/rpi-connect-wayvnc-ctl.sock" output-list
画面共有中のブラウザから、Raspberry Pi Connectのリモートシェルでこのスクリプトを実行すれば、その場で表示が切り替わります。