Як я можу поділитися буфером обміну між двома серверами X?


9

Нещодавно я встановив свою машину Ubuntu, щоб я запустив ще один X сеанс у pty8. Я здебільшого запускаю віртуальні машини або сеанси віддаленого робочого столу на цьому іншому 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 повинен зробити свою справу. Я ніколи не використовував його лише в одному ящику, протягом Х сеансів. Це працює для обміну буферами між окремими машинами, тому було б дивно, якби проблема дизайну чи зручність використання не дозволили йому працювати для вас.

Також: для вашого vms вони мають збірки для Mac та Windows .


+1. Це дуже круто, я щось подібне бачив у своїх пошуках і просто сподівався, що щось не потребує налаштування. Єдине питання, яке я розглядав із власного рішення, - це якщо хтось увійде в обліковий запис гостя на своєму ноутбуку, перш ніж я ввійду або запустить свою віртуальну машину. Це ще не сталося, але якщо це стане проблемою, я можу розглянути можливість використання Synergy для синхронізації буфера обміну.
Енді Е

1
Ще раз дякую за вашу відповідь. Я нагородив нагороду, але вирішив піти з власною відповіддю на прийняте рішення, оскільки це ближче до того, що я шукав, і до цього часу у мене не було жодних проблем.
Енді Е

1
Дякую! Ваше рішення цікаве; зробіть те, що працює для вас, правда? Ура
Брайан Егі

1

У мене була така ж проблема. Synergy не працював добре для мене (у неї є основні помилки в X11 частині синхронізації буфера обміну), і я не хотів мати сценарій, який просто опитує буфер обміну із затримкою в часі, оскільки це витрачає процесор та / або додає випадкові затримки, перш ніж я можу вставити. Я написав сценарій під назвою xclipsync, який вирішує проблему для мене.

https://github.com/apenwarr/xclipsync

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.