Eu encontrei uma solução que parece funcionar muito bem. Não tenho certeza se existe uma maneira melhor, mas escrevi um script que inicia minha VM e monitora a área de transferência em exibição: 0 para alterações. Quando uma alteração é detectada, ela copia o conteúdo da área de transferência para exibição: 1. Ele faz isso bidirecionalmente, então eu posso copiar e colar da VM muito bem também.
Aqui está o script:
#!/bin/bash
virtualbox --startvm "Windows 7" --fullscreen &
waitpid=$!
watch_clip() {
local curr="" prev="" from= 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
Em seguida, tudo o que é necessário é o comando para iniciar a segunda sessão X:
startx ./.startwin7 -- :1
Eu não notei nenhum problema, mas se alguém puder pensar em uma maneira melhor, eu apreciaria a entrada.