AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 560428
Accepted
user938271
user938271
Asked: 2020-01-06 00:24:39 +0800 CST2020-01-06 00:24:39 +0800 CST 2020-01-06 00:24:39 +0800 CST

Qual é a diferença entre os valores "off" e "external" para a opção "set-clipboard" no Tmux?

  • 772

De man tmux:

set-clipboard [on | external | off]

        Attempt to set the terminal clipboard content using the xterm(1)
        escape sequence, if there is an Ms entry in the terminfo(5)
        description (see the TERMINFO EXTENSIONS section).

        If set to on, tmux will both accept the escape sequence to create
        a buffer and attempt to set the terminal clipboard.  If set to
        external, tmux will attempt to set the terminal clipboard but
        ignore attempts by applications to set tmux buffers.  If off,
        tmux will neither accept the clipboard escape sequence nor
        attempt to set the clipboard.

        Note that this feature needs to be enabled in xterm(1) by setting
        the resource:

              disallowedWindowOps: 20,21,SetXprop

        Or changing this property from the xterm(1) interactive menu when
        required.

É assim que entendo a documentação; quando o Tmux recebe uma sequência codificada usando a Mscapacidade do terminal externo:

  • se set-clipboardfor definido como on, a sequência é usada para definir a área de transferência do terminal e um buffer Tmux

  • se set-clipboardestiver definido como off, a sequência não é usada para definir a área de transferência do terminal nem um buffer Tmux

  • se set-clipboardestiver definido como external, a sequência é usada para definir a área de transferência do terminal, mas não um buffer Tmux

Estou usando o XTerm (patch 322), com $TERMdefinido como xterm-256color, e aqui está sua descrição terminfo conforme relatado por $ infocmp -1x xterm-256color. Em particular, sua Mscapacidade é definida assim:

Ms=\E]52;%p1%s;%p2%s\007

Eu só tenho essas 3 linhas dentro ~/.Xresources:

XTerm*termName: xterm-256color
XTerm*disallowedWindowOps: 20,21,SetXprop
XTerm*selectToClipboard: true

Eu inicio o Tmux sem configuração:

$ tmux -Lx -f/dev/null

Eu configurei set-clipboardpara on:

$ tmux set -s set-clipboard on

Eu envio uma sequência OSC 52 para o Tmux printfcontendo o texto test on:

$ printf '\e]52;c;%s\007' $(printf 'test on' | base64)

O resultado é que o Tmux criou um buffer interno e enviou a sequência OSC 52 para o XTerm que preencheu sua área de transferência com test on:

$ tmux lsb
buffer0: 7 bytes: "test on"

$ xsel -b
test on

Agora eu resetei set-clipboardpara off:

$ tmux set -s set-clipboard off

Eu envio uma sequência OSC 52 para o Tmux printfcontendo o texto test off:

$ printf '\e]52;c;%s\007' $(printf 'test off' | base64)

Desta vez, o Tmux não criou um novo buffer interno e não enviou a sequência OSC 52 para o XTerm:

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

Caso contrário, uma das saídas desses 2 comandos shell incluiria test off.


Por fim, reiniciei set-clipboardpara external:

$ tmux set -s set-clipboard external

Eu envio uma sequência OSC 52 para o Tmux printfcontendo o texto test external:

$ printf '\e]52;c;%s\007' $(printf 'test external' | base64)

O Tmux não criou um novo buffer interno e não enviou a sequência OSC 52 para o XTerm:

$ xsel -b
test on

$ tmux lsb
buffer0: 7 bytes: "test on"

Caso contrário, uma das saídas desses 2 comandos shell incluiria test external.


Entendo os resultados quando defino set-clipboardcomo one para off, mas não entendo o resultado quando defino como external. Com base nesta frase da página de manual do Tmux:

Se definido como externo, o tmux tentará definir a área de transferência do terminal, mas ignorará as tentativas dos aplicativos de definir os buffers do tmux.

Eu esperava que o Tmux enviasse a sequência OSC 52 para o XTerm, sem criar um buffer interno. Na prática, ele não cria um buffer interno (esperado), mas também não envia a sequência OSC 52 para o XTerm (inesperado).

Devo ter entendido mal essa frase. Qual experimento eu poderia realizar para observar uma diferença entre os valores externale off?

tmux
  • 1 1 respostas
  • 528 Views

1 respostas

  • Voted
  1. Best Answer
    Nicholas Marriott
    2020-01-06T05:05:53+08:002020-01-06T05:05:53+08:00

    Não, você não está muito certo. Existem duas ações controladas por esta opção:

    1) O tmux define a área de transferência do X com OSC 52 (ou o que estiver em Ms)?

    2) Os aplicativos dentro do tmux podem usar o OSC 52 para criar buffers do tmux?

    Portanto, os três valores da opção set-clipboard significam:

    • off: 1 e 2 são ambos não;
    • externo: 1 é sim, mas 2 é não (este é o padrão);
    • em: ambos 1 e 2 são sim.

    Copiar texto com o modo de cópia sempre cria um buffer tmux, set-clipboard não faz diferença para isso. Existem três maneiras de criar um buffer tmux:

    • Copiando texto no modo de cópia (send -X copy-selection/copy-pipe/etc): sempre cria um buffer tmux; define a área de transferência X se set-clipboard não estiver desativado;
    • set-buffer/load-buffer: sempre crie um buffer tmux; nunca defina a área de transferência do X;
    • OSC 52 de um aplicativo dentro do tmux: cria um buffer tmux e define a área de transferência do X, mas somente se set-clipboard estiver ativado.
    • 3

relate perguntas

  • script bash para iniciar outro script em uma sessão tmux

  • É possível enviar entrada para uma sessão tmux sem se conectar a ela?

  • tmux e problema de caractere de sequência de controle

  • Bash - Receba a entrada do usuário e envie um comando com essa entrada no tmux

  • Ecoar algo de uma sessão do tmux para a sessão base

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve