Làm cách nào tôi có thể chia sẻ clipboard của mình giữa hai máy chủ X?


9

Gần đây tôi đã thiết lập máy Ubuntu của mình để tôi chạy một phiên X khác trong pty8. Tôi chủ yếu chạy các máy ảo hoặc phiên máy tính từ xa trên máy chủ X khác này, giúp điều hòa một số sự thất vọng có thể xảy ra khi tích hợp bàn phím trong các môi trường này.

Tuy nhiên, bây giờ nếu tôi sao chép một cái gì đó từ một số cửa sổ trên: 0, tôi không thể dán nó vào một số cửa sổ trên: 1.

Có cách nào để tôi có thể chia sẻ bảng tạm giữa hai phiên này không?

Câu trả lời:


7

Tôi đã đưa ra một giải pháp có vẻ hoạt động khá tốt. Tôi không chắc có cách nào tốt hơn không, nhưng tôi đã viết một đoạn script khởi động VM của mình và sau đó theo dõi bảng tạm trên màn hình: 0 để thay đổi. Khi một thay đổi được phát hiện, nó sẽ sao chép nội dung của bảng tạm để hiển thị: 1. Nó thực hiện điều này hai chiều, vì vậy tôi cũng có thể sao chép và dán từ VM.

Đây là kịch bản:

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

Sau đó, tất cả những gì cần thiết là lệnh để bắt đầu phiên X thứ hai:

startx ./.startwin7 -- :1

Tôi đã không nhận thấy bất kỳ vấn đề nào, nhưng nếu bất cứ ai có thể nghĩ ra một cách tốt hơn, tôi chắc chắn sẽ đánh giá cao đầu vào.


Bài đăng của bạn đã cho tôi một ý tưởng và tôi đã đơn giản hóa kịch bản của bạn thành điều này: xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1(xem superuser.com/a/992418/19223 )
lorenzog

3

Nếu bạn muốn một cái gì đó chìa khóa trao tay, Synergy nên làm thủ thuật. Tôi chưa bao giờ sử dụng nó trên chỉ một hộp, trong các phiên X. Nó hoạt động để chia sẻ các clipboard giữa các máy riêng biệt, vì vậy sẽ rất ngạc nhiên nếu một lỗi thiết kế hoặc vấn đề về khả năng sử dụng khiến nó không hoạt động cho bạn.

Ngoài ra: đối với vms của bạn, họ có bản dựng cho Mac và Windows .


+1. Điều đó thật tuyệt, tôi đã thấy một cái gì đó tương tự trong các tìm kiếm của mình và chỉ hy vọng có thứ gì đó không yêu cầu thiết lập. Vấn đề duy nhất tôi đã xem xét từ giải pháp của riêng mình là nếu ai đó đăng nhập vào tài khoản khách trên máy tính xách tay của tôi trước khi tôi đăng nhập hoặc khởi động máy ảo của mình. Điều đó chưa xảy ra, nhưng nếu nó trở thành một vấn đề thì tôi có thể xem xét sử dụng Synergy để đồng bộ hóa bảng tạm.
Andy E

1
Cảm ơn một lần nữa cho câu trả lời của bạn. Tôi đã trao tiền thưởng, nhưng tôi quyết định tự mình trả lời cho giải pháp được chấp nhận vì nó gần với những gì tôi đang tìm kiếm và cho đến nay tôi chưa gặp vấn đề gì với nó.
Andy E

1
Cảm ơn! Giải pháp của bạn rất thú vị; làm những gì làm việc cho bạn, phải không? Chúc mừng
Bryan Agee

1

Tôi đã từng gặp vấn đề tương tự. Synergy không hoạt động tốt với tôi (nó có lỗi lớn trong phần X11 trong quá trình đồng bộ hóa bảng tạm của nó) và tôi không muốn có một tập lệnh chỉ thăm dò bảng tạm với thời gian trễ, vì điều đó làm lãng phí CPU và / hoặc thêm sự chậm trễ ngẫu nhiên trước khi tôi có thể dán. Tôi đã viết một kịch bản gọi là xclipsync để giải quyết vấn đề cho tôi.

https://github.com/apenwarr/xclipsync

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.