Я придумав рішення, яке, здається, працює досить добре. Я не впевнений, чи є кращий спосіб, але я написав сценарій, який запускає мій 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
Тоді все, що потрібно, - це команда розпочати другий X сеанс:
startx ./.startwin7 -- :1
Я не помітив жодних проблем, але якщо хтось може придумати кращий спосіб, я б точно оцінив цей внесок.
xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1
(див superuser.com/a/992418/19223 )