web-dev-qa-db-fra.com

Comment partager mon presse-papiers entre deux serveurs X?

J'ai récemment configuré ma machine Ubuntu pour pouvoir lancer une autre session X dans pty8. J'utilise principalement des machines virtuelles ou des sessions de bureau à distance sur cet autre serveur X, ce qui permet de dissiper certaines des frustrations pouvant survenir avec l'intégration du clavier dans ces environnements.

Cependant, maintenant, si je copie quelque chose d'une fenêtre sur: 0, je ne peux pas le coller dans une fenêtre sur: 1.

Est-il possible de partager le Presse-papiers entre ces deux sessions?

9
Andy E

J'ai proposé une solution qui semble fonctionner assez bien. Je ne sais pas s'il existe un meilleur moyen, mais j'ai écrit un script qui démarre mon VM, puis surveille le Presse-papiers à l'écran: 0 pour les modifications. Lorsqu'un changement est détecté, il copie le contenu du presse-papiers à afficher: 1. Il fait cela dans les deux sens, ainsi je peux très bien copier et coller du VM.

Voici le script:

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

Ensuite, tout ce dont vous avez besoin est la commande pour démarrer la deuxième session X:

startx ./.startwin7 -- :1

Je n'ai pas remarqué de problèmes, mais si quelqu'un pouvait penser à une meilleure façon, j'apprécierais certainement sa contribution.

7
Andy E

Si vous voulez quelque chose clé en main, Synergy devrait faire l'affaire. Je ne l'ai jamais utilisé sur une seule boîte, lors de X sessions. Cela fonctionne pour partager des presse-papiers entre des machines séparées, il serait donc surprenant qu'un défaut de conception ou un problème d'utilisation empêchent de travailler pour vous.

Aussi: pour vos vms, ils ont des versions pour Mac et Windows .

3
Bryan Agee

J'ai eu le même problème. Synergy ne fonctionnait pas bien pour moi (la synchronisation du presse-papiers avec la partie X11 était entachée de bugs majeurs) et je ne souhaitais pas avoir un script qui interroge simplement le presse-papiers avec un délai, car cela gaspille la CPU et/ou ajoute des délais aléatoires avant que je puisse coller. J'ai écrit un script appelé xclipsync qui résout le problème pour moi.

https://github.com/apenwarr/xclipsync

1
apenwarr