回答:
私はかなりうまくいくような解決策を思いつきました。より良い方法があるかどうかはわかりませんが、VMを起動し、ディスプレイ:0のクリップボードの変更を監視するスクリプトを作成しました。変更が検出されると、クリップボードの内容をコピーして:1を表示します。これは双方向で行われるため、VMからコピーして貼り付けることもできます。
スクリプトは次のとおりです。
#!/bin/bash
virtualbox --startvm "Windows 7" --fullscreen &
waitpid=$!
watch_clip() {
local curr="" prev="" from=$1 to=:0
# On first run, we need to copy from :0 to :1 but not vice versa
if [[ "$from" == ":0" ]]; then
xclip -o -selection clipboard -d :0 2> /dev/null | xclip -selection clipboard -d :1
to=:1
fi
while true; do
# Get the current clipboard contents
curr=`xclip -o -selection clipboard -d $from 2> /dev/null`
# Compare to previous results and copy if it's changed
if [[ "$curr" != "$prev" ]]; then
echo "$curr" | xclip -selection clipboard -d $to
fi
prev="$curr"
sleep 0.5
done
}
watch_clip :0 &
watch_clip :1 &
wait $waitpid
次に必要なのは、2番目のXセッションを開始するコマンドです。
startx ./.startwin7 -- :1
私は問題に気づいていませんが、誰かがより良い方法を考えることができれば、私は間違いなく入力を感謝します。
ターンキーが必要な場合は、Synergyで解決できます。Xセッション全体で1つのボックスだけで使用したことはありません。別のマシン間でクリップボードを共有するように機能するので、設計上の欠陥や使いやすさの問題が原因で機能しない場合は驚くべきことです。
また、VMにはMacとWindows用のビルドがあります。
私も同じ問題を抱えていました。Synergyは私にはうまく機能せず(クリップボードの同期のX11部分に大きなバグがあり)、CPUや浪費を浪費するため、時間遅延でクリップボードをポーリングするだけのスクリプトは必要ありませんでした。貼り付ける前にランダムな遅延を追加します。問題を解決するxclipsyncというスクリプトを作成しました。
xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1
(superuser.com/a/992418/19223を参照)