Mude para a imagem de fundo no tmux em urxvt-256 usando o comando printf

Mude para a imagem de fundo no tmux em urxvt-256 usando o comando printf

Não consigo usar o comando printf quando estou dentro do tmux.

O comando para alterar o plano de fundo dinamicamente é:

printf "\e]20;/home/alexsson/Downloads/alternativ.png;\a"

Posso fazer isso diretamente no urxvt:

insira a descrição da imagem aqui

Também dentro da tela:

insira a descrição da imagem aqui

Mas este comando printf simplesmente não funciona no tmux:

insira a descrição da imagem aqui

Alguma ideia de como fazer funcionar no tmux?

PS: Há uma pergunta semelhante aqui:problema de caracteres de sequência de controle e tmux. No entanto, é difícil encontrar essa pergunta se não usarmos os termos de pesquisa corretos. Acho que minha postagem será interessante para muito mais usuários que não sabem quais termos de pesquisa usar, mas são mais comuns (como simplesmente alterar o plano de fundo). Também não há muito escrito na documentação sobre isso.

Responder1

urxvt, tmuxe screensão três emuladores de terminal diferentes, o primeiro usa X11 como backend para exibição/entrada, enquanto os outros dois usam um terminal host.

tmuxe screensão realmente emuladores de terminal, eles implementam uma série de recursos (como atributos de caracteres em negrito, limpeza de tela...) ativados por meio de algumas sequências de escape, mas definindo oimagem de fundonão está entre os recursos que eles suportam.

Lembre-se também de que uma sessão screen/ tmuxpode ser anexada a qualquer tipo de terminal host, até mesmo a vários de uma vez (com -x), alguns podem suportar esse recurso, outros não.

screentransmitirá as sequências de escape que não reconhece, tmuxnão reconhece. Sequências que começam com OSC ( \e]) terminam em BEL ( \a/ ^G). Quando tmuxvê a \e], ele lê até \a(ou a próxima sequência de escape) e se não reconhece essa sequência, apenas a descarta.

No entanto,tmux suporta a passagem de texto arbitrário literalmente para o (s) terminal (is) hostcom a \ePtmux;\e<text>\e\sequência. Então aqui você poderia fazer:

printf '\ePtmux;\e\e]20;/home/alexsson/Downloads/alternativ.png;\a\e\\'

De qualquer forma, observe que esse é um recurso bastante perigoso do rxvt. Por exemplo, se você executar rxvtcomo root no Linux e executar cat malicious-filecom aquele arquivo contendo algo como \e]20;/dev/watchdog\a(em sistemas onde um watchdog está disponível), isso irá reinicializar seu sistema após alguns segundos.

informação relacionada