Compartilhando a área de transferência do Mac OS X com o servidor X interno

21

Gostaria de poder copiar e colar entre aplicativos nativos do MacOS X (cacau?) E aqueles executados no servidor X interno do Mac.

Atualmente, eu posso copiar e colar de forma independente. Se eu selecionar texto em uma janela xterm, posso colá-lo novamente em qualquer outra janela baseada em X. Da mesma forma, a cópia de informações fora do X pode ser colada em aplicativos que também estão fora do X.

Como exemplo, se eu (exatamente nessa ordem):

  • Copiar (selecione usando o mouse) "Copiar usando a seleção X" em uma janela xterm
  • Copiar (Editar | Copiar) "Texto no Firefox" no Firefox
  • Colar (Shift Insert xmodmap) no nano, obtenho "Copiar usando a seleção X"
  • Colar (Editar | Colar) aqui recebo -> Texto no Firefox
  • Colar no MacVIM (Editar | Colar) Recebo "Texto no Firefox"
  • Colar em / usr / bin / vim (não gráfico): "Copiar usando a seleção X"

Como habilito o "compartilhamento da área de transferência" entre o X e o cacau?

O xmodmap que estou usando para colar no X é:

xmodmap -e "keycode 84 = Insert"

onde 84 é a tecla Enter do teclado numérico. Então Shift Enter me dá colar.

kwutchak
fonte
Isso é consistente nos aplicativos X? Você está tentando isso de forma simples xtermou similar, não vimou algo com seus próprios buffers? Qual versão do OS X você está executando? Minha área de transferência é compartilhada entre o Cocoa e o X11, conforme esperado em 10.5.7.
jtb
Ei jtb, obrigado pela sua ajuda. Eu uso o vim e estou familiarizado com os problemas relacionados ao uso de buffers internos. Normalmente trapaceio e mudo para o modo de edição e colo no menu de edição do gvim (ou MacVim). Adicionei algumas informações extras ao meu post para esclarecer as outras partes da sua pergunta.
kwutchak
Ah, obrigado pela informação extra. Estou vendo principalmente o que você descreve, embora a colagem na etapa 3 funcione (usando o clique do meio, não tenho o Insert mapeado). O Command-C parece copiar para a área de transferência nativa se eu tiver o texto selecionado no X11, mas vejo o que você quer dizer com o uso das operações de copiar / colar X nativas que não estão sincronizadas corretamente.
jtb
Para a versão recente do OSX (eu uso 10.12), o seguinte funciona: stackoverflow.com/a/9525347/1353267
Samveen

Respostas:

14

Você pode ativar a sincronização da área de transferência editando ~/Library/Preferences/org.x.X11.pliste adicionando as cinco chaves booleanas 1 a seguir (e verificando-as).

sync_clipboard_to_pasteboard
sync_pasteboard
sync_pasteboard_to_clipboard
sync_pasteboard_to_primary
sync_primary_on_select

Reinicie o X11 e eles devem ser sincronizados corretamente.

Editar: você pode adicionar as chaves com o Property List Editor ou com os seguintes comandos do 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

Uma solução alternativa é instalar a versão mais recente do XQuartz, que expõe essas opções através do painel X11 Preferences >> Pasteboard.

jtb
fonte
Esta linha digitou no meu xterm e copiou em ...;) Essa linha foi colada com êxito de volta no meu xterm ...;) Outro caso em que minha esposa não entendia o quão satisfatória essa correção é !! Muito obrigado, muito mesmo.
kwutchak
Obrigado por perguntar. O Mac tem o hábito de atingir o Cmd + C na medida em que eu não sabia o que estava perdendo. Mas estou muito feliz por ter isso na minha configuração agora.
jtb
Eu instalei o XQuarts e alterei as opções para ele. Quando eu ssh em um sistema remoto com o XForwarding ativado (nos dois sistemas) e adiciono itens à área de transferência usando xclip (por exemplo: ls | xclip), a área de transferência no meu sistema local (mac os x) não muda. o que estou perdendo?
Cwd
4
Eu acho que o arquivo correto para escrever agora éorg.macosforge.xquartz.X11
Keith Smiley
2

Você também pode recompilar o vim-7.3 e adicionar o seguinte ao seu .vimrc:

set clipboard=unnamed

Então você poderá fazer 'yy' no vim e colar no cacau com Cmd + V. E vice-versa: copie com Cmd + V no cacau e cole no vim com 'p'

user47498
fonte
observe que seu vim precisa ser compilado com a clipboardopção ativada para que isso funcione. Você pode ver se é executando vim --version | grep clipboard. Se diz +clipboard, então você é bom. Se diz -clipboard, isso não vai funcionar.
egarcia