Compartir el portapapeles de Mac OS X con el servidor X interno

21

Me gustaría poder copiar y pegar entre las aplicaciones nativas (¿Cocoa?) De MacOS X y las que se ejecutan en el servidor X interno de Mac.

Actualmente puedo copiar y pegar de forma independiente. Si selecciono texto en una ventana xterm, puedo volver a pegarlo en cualquier otra ventana basada en X. Del mismo modo, copiar información fuera de X se puede pegar en aplicaciones que también están fuera de X.

Como ejemplo, si yo (exactamente en este orden):

  • Copiar (seleccionar usando el mouse) "Copiar usando la selección X" en una ventana xterm
  • Copiar (Editar | Copiar) "Texto en Firefox" en Firefox
  • Pegar (Shift Insertar xmodmap) en nano me sale "Copiar usando la selección X"
  • Pegar (Editar | Pegar) aquí obtengo -> Texto en Firefox
  • Pegar en MacVIM (Editar | Pegar) Obtengo "Texto en Firefox"
  • Pegar en / usr / bin / vim (no gráfico) me sale "Copiar usando la selección X"

¿Cómo habilito el "uso compartido del portapapeles" entre X y Cocoa?

El xmodmap que estoy usando para pegar en X es:

xmodmap -e "keycode 84 = Insert"

donde 84 es la tecla Intro del teclado numérico. Entonces Shift Enter me da pasta.

kwutchak
fuente
¿Es esto consistente en las aplicaciones X? ¿Lo estás intentando de forma simple xtermo similar, no vimo algo con sus propios amortiguadores? ¿Qué versión de OS X estás ejecutando? Mi portapapeles se comparte en Cocoa y X11 como se esperaba en 10.5.7.
jtb
Hola jtb, gracias por tu ayuda. Uso vim y estoy familiarizado con los problemas relacionados con el uso de sus buffers internos. Normalmente hago trampa y cambio al modo de edición y luego pego desde el menú de edición de gvim (o MacVim). Agregué información adicional a mi publicación para aclarar las otras partes de su pregunta.
kwutchak
Ah, gracias por la información extra. Estoy viendo principalmente lo que usted describe, aunque la pasta en el paso 3 funciona (usando el clic central, no tengo Insertar mapeado) Command-C parece copiarse en el portapapeles nativo si tengo texto seleccionado en X11, pero veo lo que quiere decir que el uso de las operaciones X nativas de copiar / pegar no está sincronizado correctamente.
jtb
Para la versión reciente de OSX (uso 10.12), los siguientes trabajos: stackoverflow.com/a/9525347/1353267
Samveen

Respuestas:

14

Puede habilitar la sincronización del portapapeles editando ~/Library/Preferences/org.x.X11.plisty agregando las siguientes cinco teclas booleanas 1 (y verificándolas).

sync_clipboard_to_pasteboard
sync_pasteboard
sync_pasteboard_to_clipboard
sync_pasteboard_to_primary
sync_primary_on_select

Reinicie X11 y deberían estar sincronizados correctamente.

Editar: puede agregar las claves con el Editor de lista de propiedades o con los siguientes comandos de Terminal:

defaults write org.x.X11 sync_clipboard_to_pasteboard -boolean true
defaults write org.x.X11 sync_pasteboard -boolean true
defaults write org.x.X11 sync_pasteboard_to_clipboard -boolean true
defaults write org.x.X11 sync_pasteboard_to_primary -boolean true
defaults write org.x.X11 sync_primary_on_select -boolean true

Una solución alternativa es instalar la última versión de XQuartz que expone estas opciones a través del panel Preferencias >> Panel de cartón X11.

jtb
fuente
Esta línea escribió en mi xterm y se copió a través de ...;) Esta línea se pegó con éxito en mi xterm ...;) ¡¡¡Otro caso en el que mi esposa no entendería cuán extremadamente satisfactoria es esta solución !! Muchas muchas gracias.
kwutchak
Gracias por preguntar. La Mac me tiene la costumbre de golpear Cmd + C en la medida en que no me di cuenta de lo que me faltaba. Pero estoy bastante contento de tener esto en mi configuración ahora.
jtb
He instalado XQuarts y he cambiado las opciones para ello. Cuando ssh a un sistema remoto con XForwarding habilitado (en ambos sistemas) y agrego cosas al portapapeles usando xclip (por ejemplo: ls | xclip), el portapapeles de mi sistema local (mac os x) no cambia. ¿Qué me estoy perdiendo?
cwd
44
Creo que el archivo correcto para escribir ahora esorg.macosforge.xquartz.X11
Keith Smiley
2

También puede recompilar vim-7.3 y agregar lo siguiente a su .vimrc:

set clipboard=unnamed

Entonces podrás hacer 'yy' en vim y pegar en Cocoa con Cmd + V. Y viceversa: copie con Cmd + V en Cocoa y pegue en vim con 'p'

usuario47498
fuente
tenga en cuenta que su vim debe compilarse con la clipboardopción activada para que esto funcione. Puedes ver si es ejecutando vim --version | grep clipboard. Si dice +clipboard, entonces eres bueno. Si dice -clipboard, esto no funcionará.
egarcia