Как я могу поделиться своим буфером обмена между двумя X-серверами?
9
Я недавно настроил свой компьютер с Ubuntu так, чтобы я запускал еще один сеанс X в pty8. В основном я запускаю виртуальные машины или сеансы удаленного рабочего стола на этом другом X-сервере, что помогает преодолеть некоторые разочарования, которые могут возникнуть при интеграции клавиатуры в этих средах.
Однако теперь, если я копирую что-то из какого-либо окна в: 0, я не могу вставить это в какое-то окно в: 1.
Есть ли способ, которым я могу поделиться буфером обмена между этими двумя сессиями?
Я пришел к решению, которое, кажется, работает довольно хорошо. Я не уверен, что есть лучший способ, но я написал скрипт, который запускает мою виртуальную машину, а затем следит за отображением буфера обмена: 0 на предмет изменений. При обнаружении изменения он копирует содержимое буфера обмена для отображения: 1. Это делает это двунаправленно, так что я тоже могу копировать и вставлять с виртуальной машины.
Вот сценарий:
#!/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 versaif[["$from"==":0"]];then
xclip -o -selection clipboard -d :02>/dev/null | xclip -selection clipboard -d :1
to=:1fiwhile 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 changedif[["$curr"!="$prev"]];then
echo "$curr"| xclip -selection clipboard -d $to
fi
prev="$curr"
sleep 0.5done}
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 сессиях. Он работает для совместного использования буферов обмена между отдельными машинами, поэтому было бы удивительно, если бы недостаток дизайна или проблема с юзабилити не позволяли ему работать.
+1. Это довольно круто, я видел нечто подобное в своих поисках и просто надеялся, что есть что-то, что не требует какой-либо настройки. Единственная проблема, которую я рассмотрел в своем собственном решении, - это если кто-нибудь войдет в гостевую учетную запись на моем ноутбуке, прежде чем я войду в систему или запустлю свою виртуальную машину. Этого еще не произошло, но если это станет проблемой, я мог бы использовать Synergy для синхронизации буфера обмена.
Энди Э
1
Еще раз спасибо за ваш ответ. Я наградил награду, но я решил пойти со своим собственным ответом за принятое решение, так как оно ближе к тому, что я искал, и у меня до сих пор не было проблем с ним.
Энди Е
1
Спасибо! Ваше решение интересно; делай то, что у тебя работает, правда? Приветствия
Брайан Эйджи
1
У меня такая же проблема. Синергия у меня не сработала (у нее есть серьезные ошибки в части синхронизации X11 в буфере обмена), и я не хотел иметь скрипт, который просто опрашивал бы буфер обмена с задержкой по времени, так как он тратит ресурсы процессора и / или добавляет случайные задержки, прежде чем я могу вставить. Я написал скрипт под названием xclipsync, который решает проблему для меня.
xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1
(см superuser.com/a/992418/19223 )Если вы хотите что-то под ключ, Synergy должна сделать свое дело. Я никогда не использовал его только на одной коробке, в X сессиях. Он работает для совместного использования буферов обмена между отдельными машинами, поэтому было бы удивительно, если бы недостаток дизайна или проблема с юзабилити не позволяли ему работать.
Также: для вашего vms у них есть сборки для Mac и Windows .
источник
У меня такая же проблема. Синергия у меня не сработала (у нее есть серьезные ошибки в части синхронизации X11 в буфере обмена), и я не хотел иметь скрипт, который просто опрашивал бы буфер обмена с задержкой по времени, так как он тратит ресурсы процессора и / или добавляет случайные задержки, прежде чем я могу вставить. Я написал скрипт под названием xclipsync, который решает проблему для меня.
https://github.com/apenwarr/xclipsync
источник