Come posso condividere i miei appunti tra due server X?


9

Di recente ho configurato la mia macchina Ubuntu in modo da eseguire un'altra sessione X in pty8. Per lo più eseguo macchine virtuali o sessioni desktop remote su questo altro server X, il che aiuta a mediare alcune delle frustrazioni che possono verificarsi con l'integrazione della tastiera in questi ambienti.

Tuttavia, ora se copio qualcosa da una finestra su: 0, non posso incollarlo in una finestra su: 1.

C'è un modo per condividere gli appunti tra queste due sessioni?

Risposte:


7

Ho trovato una soluzione che sembra funzionare abbastanza bene. Non sono sicuro che ci sia un modo migliore, ma ho scritto uno script che avvia la mia macchina virtuale e quindi monitora gli appunti sul display: 0 per le modifiche. Quando viene rilevata una modifica, copia il contenuto degli appunti per visualizzare: 1. Lo fa in modo bidirezionale, quindi posso anche copiarlo e incollarlo dalla VM.

Ecco la sceneggiatura:

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

Quindi tutto ciò che serve è il comando per avviare la seconda sessione X:

startx ./.startwin7 -- :1

Non ho notato alcun problema, ma se qualcuno può pensare a un modo migliore apprezzerei sicuramente l'input.


Il tuo post mi ha dato un'idea e ho semplificato il tuo copione a questo: xclip -selection clip -o -display :0 | xclip -selection clip -i -display :1(vedi superuser.com/a/992418/19223 )
Lorenzog,

3

Se vuoi qualcosa di chiavi in ​​mano, Synergy dovrebbe fare il trucco. Non l'ho mai usato su una sola scatola, in tutte le sessioni X. Funziona per condividere gli appunti tra macchine separate, quindi sarebbe sorprendente se un difetto di progettazione o un problema di usabilità gli impedissero di funzionare per te.

Inoltre: per i tuoi vms, hanno build per Mac e Windows .


+1. È abbastanza bello, nelle mie ricerche avevo visto qualcosa del genere e speravo solo che ci fosse qualcosa che non richiedeva alcuna configurazione. L'unico problema che ho preso in considerazione dalla mia soluzione è se qualcuno accede all'account guest sul mio laptop prima di accedere o avviare la mia macchina virtuale. Ciò non è ancora accaduto, ma se dovesse diventare un problema, potrei invece utilizzare Synergy per sincronizzare gli Appunti.
Andy E

1
Grazie ancora per la tua risposta. Ho assegnato la generosità, ma ho deciso di seguire la mia risposta per la soluzione accettata in quanto è più vicina a ciò che stavo cercando e finora non ho avuto problemi.
Andy E

1
Grazie! La tua soluzione è interessante; fai quello che funziona per te, giusto? Saluti
Bryan Agee,

1

Ho avuto lo stesso problema. Synergy non ha funzionato bene per me (ha importanti bug nella parte X11 della sincronizzazione degli appunti), e non volevo avere uno script che eseguisse il polling degli appunti con un ritardo, in quanto sprecava CPU e / o aggiunge ritardi casuali prima che io possa incollare. Ho scritto una sceneggiatura chiamata xclipsync che risolve il problema per me.

https://github.com/apenwarr/xclipsync

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.