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.


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.


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'


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.