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.