Como posso copiar texto do xterm (Awesome, Debian, VirtualBox)?

15

Eu executei a instalação mínima do Debian dentro de uma instância do VirtualBox, instalei o gerenciador de janelas X11 e Awesome manualmente (ainda sem nenhuma configuração personalizada) e instalei as adições do VirtualBox (e habilitei a área de transferência compartilhada nas configurações). No entanto, copiar e colar texto do terminal xterm ainda não parece funcionar: CTRL+ Cé enviado como um sinal para um terminal e Shift+ Insertinsere o texto que eu selecionei (o que provavelmente significa que ele foi copiado para algum buffer de alguma forma), mas ainda não está disponível no sistema operacional host.

Max Yankov
fonte

Respostas:

19

O X11 usa dois buffers: PRIMARYe CLIPBOARD. Para copiar / colar no CLIPBOARDbuffer, você pode usar CTRL-Ce CTRL-V. Você pode inserir no PRIMARYbuffer selecionando um texto e colá-lo pressionando o botão do meio do mouse.

Se você deseja usar o CLIPBOARDbuffer, coloque-o no seu ~/.Xresourcesarquivo e use Ctrl+ Shift+C e Ctrl+ Shift+ Vpara copiar / colar de / para o CLIPBOARDbuffer no xterm:

xterm*VT100.Translations: #override \
                 Ctrl Shift <Key>V:    insert-selection(CLIPBOARD) \n\
                 Ctrl Shift <Key>C:    copy-selection(CLIPBOARD)

Você precisa correr xrdb ~/.Xresources depois de colocar isso no arquivo.

MichalH
fonte
2
O uso xrdb ~/.Xresourcessubstituirá destrutivamente sua configuração padrão. Em vez disso usexrdb -merge ~/.Xresources
xaedes
14

Não é necessário modificar os recursos de conversão do xterm para copiar dados de / para o Firefox, a menos que você prefira usar o teclado para ajudar no processo.

Desde 2006, o xterm possui um recurso selectToClipboardque permite alternar entre a PRIMARYseleção (padrão) eCLIPBOARD (Firefox, etc).

Como alguns programas usam a seleção primária e outros não, é uma entrada de menu no xterm ( controlmiddle-mouse):

mostre selectToClipboard na entrada de menu

A adaptação da sugestão para caracteres de controle, como os aplicativos GNOME, permite usar o teclado e, ao mesmo tempo, permitir que o menu alterne entre os dois tipos de seleção:

xterm*VT100.Translations: #override \
                 Ctrl Shift <Key>V:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>C:    copy-selection(SELECT)

embora a adição shiftInsertpossa estar mais próxima da intenção original:

xterm*VT100.Translations: #override \
                 Shift <Key>Insert:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>V:    insert-selection(SELECT) \n\
                 Ctrl Shift <Key>C:    copy-selection(SELECT)

Uma planície controlCé geralmente atribuída a um sinal :INTR

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Leitura adicional:

Thomas Dickey
fonte
4
  1. Aberto xterm e realce o texto que você deseja copiar.
  2. Vá para o aplicativo em que deseja colar e passe o cursor do mouse sobre o campo em que deseja colar.
  3. Clique no botão de rolagem do mouse. (em laptops, isso pode ser feito pressionando o botão esquerdo e o botão direito ao mesmo tempo)

Quando você destaca o texto, ele copia o texto para o buffer principal. Lembre-se de que, se você destacar qualquer outro texto antes de colar, esse texto substituirá o conteúdo anterior no buffer primário.

Peschke
fonte
1
Por favor, leia a pergunta com atenção. "Vá para o aplicativo em que deseja colar" - isso sugere que você não percebeu que eu precisava colá-lo no sistema operacional host.
Max Yankov
Desculpe, não tenho o terceiro botão do mouse. usando trackball aqui
holms
2

Acontece que eu não expliquei o fato de o X11 ter dois buffers: primário e de transferência . Meu texto do xterm foi copiado no buffer primário, enquanto eu precisava dele no buffer da área de transferência.

Consegui resolver o problema instalando o parcellitepacote, iniciando-o e configurando-o para sincronizar dois buffers.

Max Yankov
fonte