2つのXサーバー間でクリップボードを共有するにはどうすればよいですか?


9

最近、Ubuntuマシンをセットアップして、pty8で別のXセ​​ッションを実行するようにしました。私は主に、この別のXサーバーで仮想マシンまたはリモートデスクトップセッションを実行します。これは、これらの環境でのキーボード統合で発生する可能性があるフラストレーションのいくつかを仲介するのに役立ちます。

ただし、:0のウィンドウから何かをコピーすると、:1のウィンドウに貼り付けることができなくなります。

これらの2つのセッション間でクリップボードを共有する方法はありますか?

回答:


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

次に必要なのは、2番目のXセッションを開始するコマンドです。

startx ./.startwin7 -- :1

私は問題に気づいていませんが、誰かがより良い方法を考えることができれば、私は間違いなく入力を感謝します。


あなたの投稿は私にアイデアを与え、私はあなたのスクリプトをこれに簡略化しました:xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1superuser.com/a/992418/19223を参照)
lorenzog

3

ターンキーが必要な場合は、Synergyで解決できます。Xセッション全体で1つのボックスだけで使用したことはありません。別のマシン間でクリップボードを共有するように機能するので、設計上の欠陥や使いやすさの問題が原因で機能しない場合は驚くべきことです。

また、VMにはMacとWindows用のビルドがあります


+1。それはかなりクールです、私は私の検索でそのようなものを見たことがあり、設定を必要としないものがあることを望んでいました。私のソリューションから検討した唯一の問題は、仮想マシンをログインまたは起動する前に、誰かがラップトップのゲストアカウントにログインした場合です。それはまだ起こっていませんが、問題が発生した場合は、代わりにSynergyを使用してクリップボードを同期することを検討するかもしれません。
アンディE

1
回答ありがとうございます。私は賞金を授与しましたが、私が受け入れた解決策は自分が求めていたものに近いため、これまでのところ問題はなかったので、私自身の回答を使用することにしました。
アンディE

1
ありがとう!あなたの解決策は興味深いです。あなたのために何がうまくいきますか?乾杯
ブライアンエイジ2013年

1

私も同じ問題を抱えていました。Synergyは私にはうまく機能せず(クリップボードの同期のX11部分に大きなバグがあり)、CPUや浪費を浪費するため、時間遅延でクリップボードをポーリングするだけのスクリプトは必要ありませんでした。貼り付ける前にランダムな遅延を追加します。問題を解決するxclipsyncというスクリプトを作成しました。

https://github.com/apenwarr/xclipsync

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.