두 X 서버간에 클립 보드를 공유하려면 어떻게해야합니까?


9

최근에 pty8에서 다른 X 세션을 실행할 수 있도록 Ubuntu 시스템을 설정했습니다. 나는 주로이 다른 X 서버에서 가상 머신 또는 원격 데스크톱 세션을 실행하여 이러한 환경에서 키보드 통합으로 발생할 수있는 좌절을 중재합니다.

그러나 이제 : 0의 일부 창에서 무언가를 복사하면 : 1의 일부 창에 붙여 넣을 수 없습니다.

이 두 세션간에 클립 보드를 공유 할 수있는 방법이 있습니까?

답변:


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

그런 다음 두 번째 X 세션을 시작하는 명령 만 있으면됩니다.

startx ./.startwin7 -- :1

나는 어떤 문제도 눈치 채지 못했지만 더 나은 방법을 생각할 수 있다면 입력에 감사드립니다.


귀하의 게시물은 나에게 아이디어를 주었고 나는 당신의 스크립트를 단순화했습니다 : xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1( superuser.com/a/992418/19223 참조 )
lorenzog

3

턴키가 필요한 경우 Synergy 가 트릭을 수행해야합니다. 나는 X 세션에서 하나의 상자에서만 사용하지 않았습니다. 별도의 컴퓨터간에 클립 보드를 공유하는 방식으로 작동하므로 디자인 결함이나 유용성 문제로 인해 클립 보드가 작동하지 않는 경우 놀라운 일입니다.

또한 vms의 경우 Mac 및 Windows 용 빌드 있습니다.


+1. 그것은 꽤 멋지다. 나는 내 검색에서 그런 것을 보았고 설정이 필요없는 것이 있기를 바랐다. 내 솔루션에서 고려한 유일한 문제는 가상 컴퓨터에 로그인하거나 시작하기 전에 누군가 내 랩톱에서 게스트 계정에 로그인하는 경우입니다. 아직 일어나지 않았지만 문제가되면 Synergy를 사용하여 클립 보드를 대신 동기화 할 수 있습니다.
Andy E

1
답변 해 주셔서 다시 한 번 감사드립니다. 나는 현상금을 수여했지만, 내가 찾고있는 것에 더 가깝기 때문에 받아 들여진 해결책에 대한 내 자신의 대답을 결정하기로 결정했으며, 지금까지 아무런 문제가 없었습니다.
Andy E

1
감사! 당신의 해결책은 흥미 롭습니다. 그래도 당신을 위해 무엇이 효과가 있습니까? 건배
Bryan Agee

1

나는 같은 문제가 있었다. Synergy는 나에게 잘 작동하지 않았으며 (클립 보드 동기화의 X11 부분에 큰 버그가 있음) CPU 및 / 또는 낭비되는 시간 지연으로 클립 보드를 폴링하는 스크립트를 원하지 않습니다. 붙여 넣기 전에 임의의 지연을 추가합니다. 나는 xclipsync라는 스크립트를 작성하여 문제를 해결했다.

https://github.com/apenwarr/xclipsync

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.