如何在两个 X 服务器之间共享我的剪贴板?

And*_*y E 9 xorg clipboard

我最近设置了我的 Ubuntu 机器,以便在 pty8 中运行另一个 X 会话。我主要在另一个 X 服务器上运行虚拟机或远程桌面会话,这有助于调解在这些环境中键盘集成可能发生的一些挫折。

但是,现在如果我从 :0 上的某个窗口复制某些内容,则无法将其粘贴到 :1 上的某个窗口中。

有没有办法在这两个会话之间共享剪贴板?

And*_*y E 7

我想出了一个似乎工作得很好的解决方案。我不确定是否有更好的方法,但我编写了一个脚本来启动我的 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
Run Code Online (Sandbox Code Playgroud)

然后所有需要的是启动第二个 X 会话的命令:

startx ./.startwin7 -- :1
Run Code Online (Sandbox Code Playgroud)

我没有注意到任何问题,但如果有人能想到更好的方法,我肯定会感谢您的投入。