Bagaimana saya bisa berbagi clipboard saya antara dua server X?

9

Saya baru-baru ini mengatur mesin Ubuntu saya sehingga saya menjalankan sesi X lain di pty8. Saya kebanyakan menjalankan mesin virtual atau sesi desktop jarak jauh pada server X lain ini, yang membantu memediasi beberapa frustrasi yang dapat terjadi dengan integrasi keyboard di lingkungan ini.

Namun, sekarang jika saya menyalin sesuatu dari beberapa jendela di: 0, saya tidak bisa menempelkannya ke beberapa jendela di: 1.

Apakah ada cara saya bisa berbagi clipboard antara dua sesi ini?

Andy E
sumber

Jawaban:

7

Saya datang dengan solusi yang sepertinya bekerja cukup baik. Saya tidak yakin apakah ada cara yang lebih baik, tetapi saya menulis skrip yang memulai VM saya dan kemudian memantau clipboard yang dipajang: 0 untuk perubahan. Ketika suatu perubahan terdeteksi, ia menyalin isi clipboard untuk ditampilkan: 1. Ini melakukan dua arah, sehingga saya dapat menyalin dan menempel dari VM dengan baik juga.

Ini skripnya:

#!/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

Maka yang diperlukan hanyalah perintah untuk memulai sesi X kedua:

startx ./.startwin7 -- :1

Saya belum melihat adanya masalah, tetapi jika ada yang bisa memikirkan cara yang lebih baik saya pasti akan menghargai masukannya.

Andy E
sumber
Posting Anda memberi saya ide dan saya menyederhanakan skrip Anda untuk ini: xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1(lihat superuser.com/a/992418/19223 )
lorenzog
3

Jika Anda menginginkan sesuatu turnkey, Synergy harus melakukan trik. Saya tidak pernah menggunakannya hanya pada satu kotak, di seluruh sesi X. Ini berfungsi untuk berbagi clipboard di antara mesin yang berbeda, sehingga akan mengejutkan jika kesalahan desain atau masalah kegunaan mencegahnya bekerja untuk Anda.

Juga: untuk vms Anda, mereka memiliki build untuk Mac dan Windows .

Bryan Agee
sumber
+1. Itu cukup keren, saya telah melihat sesuatu seperti itu dalam pencarian saya dan hanya berharap ada sesuatu yang tidak memerlukan pengaturan apa pun. Satu-satunya masalah yang saya pertimbangkan dari solusi saya sendiri adalah jika seseorang masuk ke akun tamu di laptop saya sebelum saya masuk atau memulai mesin virtual saya. Itu belum terjadi, tetapi jika itu menjadi masalah maka saya mungkin akan menggunakan Synergy untuk menyinkronkan clipboard saja.
Andy E
1
Sekali lagi terima kasih atas jawaban Anda. Saya telah memberikan hadiah, tetapi saya memutuskan untuk pergi dengan jawaban saya sendiri untuk solusi yang diterima karena lebih dekat dengan apa yang saya cari, dan sejauh ini saya tidak punya masalah dengan itu.
Andy E
1
Terima kasih! Solusi Anda menarik; lakukan apa yang bekerja untuk Anda, bukan? Cheers
Bryan Agee
1

Saya memiliki masalah yang sama. Synergy tidak bekerja dengan baik untuk saya (memiliki bug utama di bagian X11 dari sinkronisasi clipboard-nya), dan saya tidak ingin memiliki skrip yang hanya mensurvei clipboard dengan jeda waktu, karena itu menghamburkan CPU dan / atau menambahkan penundaan acak sebelum saya bisa menempel. Saya menulis sebuah skrip bernama xclipsync yang memecahkan masalah bagi saya.

https://github.com/apenwarr/xclipsync

apenwarr
sumber