Answers:
我想出了一个看起来效果很好的解决方案。我不确定是否有更好的方法,但是我写了一个脚本来启动我的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
我没有发现任何问题,但是如果有人能想到更好的方法,我一定会很感激的。
如果您想交钥匙,Synergy应该可以解决。在X会话中,我从未在一个盒子上使用过它。它可以在不同的计算机之间共享剪贴板,因此如果设计缺陷或可用性问题使它无法为您服务,那将是令人惊讶的。
另外:对于您的vm,它们具有适用于Mac和Windows的版本。
我有同样的问题。Synergy不适用于我(它在剪贴板同步的X11部分中存在重大错误),并且我不希望有一个脚本会随时间延迟轮询剪贴板,因为这会浪费CPU和/或在粘贴之前添加了随机延迟。我编写了一个脚本xclipsync,可以为我解决问题。
xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1
(见superuser.com/a/992418/19223)