Cambie a la imagen de fondo en tmux en urxvt-256 usando el comando printf

Cambie a la imagen de fondo en tmux en urxvt-256 usando el comando printf

No puedo usar el comando printf cuando estoy dentro de tmux.

El comando para cambiar el fondo sobre la marcha es:

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

Puedo hacer esto directamente en urxvt:

ingrese la descripción de la imagen aquí

También dentro de la pantalla:

ingrese la descripción de la imagen aquí

Pero este comando printf simplemente no funciona en tmux:

ingrese la descripción de la imagen aquí

¿Alguna idea de cómo hacerlo funcionar en tmux?

PD: Hay una pregunta similar aquí:Problema de caracteres de secuencia de control y tmux. Sin embargo, es difícil encontrar esa pregunta si no se utilizan los términos de búsqueda correctos. Creo que mi publicación será interesante para muchos más usuarios que no saben qué términos de búsqueda usar pero que son más comunes (como simplemente cambiar el fondo). Tampoco hay mucho escrito en la documentación sobre esto.

Respuesta1

urxvt, tmuxy screenson tres emuladores de terminal diferentes, el primero usa X11 como backend para visualización/entrada, mientras que los otros dos usan un terminal host.

tmuxy screenson en realidad emuladores de terminal, implementan una serie de funciones (como atributos de caracteres en negrita, limpieza de pantalla...) que se activan mediante algunas secuencias de escape, pero configurando elimagen de fondono está entre las características que admiten.

Recuerde también que una sesión screen/ tmuxse puede conectar a cualquier tipo de terminal host, incluso a varios a la vez (con -x), algunos pueden admitir esa característica, otros no.

screentransmitirá las secuencias de escape que no reconoce, tmuxno lo reconoce. Las secuencias que comienzan con OSC ( \e]) terminan en BEL ( \a/ ^G). Cuando tmuxve un \e], lee hasta \a(o la siguiente secuencia de escape) y si no reconoce esa secuencia, simplemente la descarta.

Sin embargo,tmux admite el paso de texto arbitrario palabra por palabra a los terminales hostcon la \ePtmux;\e<text>\e\secuencia. Entonces aquí puedes hacer:

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

En cualquier caso, tenga en cuenta que se trata de una característica bastante peligrosa de rxvt. Por ejemplo, si ejecuta rxvtcomo root en Linux y ejecuta cat malicious-filecon ese archivo que contiene algo como \e]20;/dev/watchdog\a(en sistemas donde hay un perro guardián disponible), su sistema se reiniciará después de unos segundos.

información relacionada