tmux에서는 printf 명령을 사용할 수 없습니다.
배경을 동적으로 변경하는 명령은 다음과 같습니다.
printf "\e]20;/home/alexsson/Downloads/alternativ.png;\a"
urxvt에서 직접 이 작업을 수행할 수 있습니다.
그리고 화면 내에서:
하지만 이 printf 명령은 tmux에서는 전혀 작동하지 않습니다.
tmux에서 어떻게 작동하게 할 수 있는지 아시나요?
추신: 여기에도 비슷한 질문이 있습니다.tmux 및 제어 시퀀스 문자 문제. 그러나 올바른 검색어를 사용하지 않으면 문제를 찾기가 어려울 수 있습니다. 나는 어떤 검색어를 사용해야 할지 모르지만 더 일반적인(단순한 배경 변경과 같이) 더 많은 사용자에게 내 게시물이 흥미로울 것이라고 생각했습니다. 이에 대한 문서도 많지 않습니다.
답변1
urxvt
, 세 가지 터미널 에뮬레이터가 tmux
있는데 screen
, 첫 번째는 X11을 디스플레이/입력용 백엔드로 사용하고 나머지 두 개는 호스트 터미널을 사용합니다.
tmux
실제 터미널 에뮬레이터 이며 screen
일부 이스케이프 시퀀스(굵은 문자 속성, 화면 지우기 등)로 활성화되는 많은 기능을 구현합니다.배경 그림지원되는 기능이 아닙니다.
또한 screen
/ tmux
세션은 모든 유형의 호스트 터미널에 연결될 수 있으며 심지어 여러 호스트 터미널에 동시에 연결될 수도 있습니다( 를 사용하여 -x
). 일부는 이 기능을 지원할 수도 있고 일부는 지원하지 않을 수도 있습니다.
screen
인식하지 못하는 이스케이프 시퀀스를 전달합니다 tmux
. OSC( )로 시작하는 시퀀스는 \e]
BEL( / )로 끝납니다. a가 보일 때까지(또는 다음 이스케이프 시퀀스)를 읽고, 시퀀스를 인식하지 못하면 해당 시퀀스를 버립니다.\a
^G
tmux
\e]
\a
하지만,tmux
호스트 터미널에 임의의 텍스트를 그대로 전달하는 것을 지원합니다.주문 으로 \ePtmux;\e<text>\e\
. 여기서는 다음과 같이 할 수 있습니다.
printf '\ePtmux;\e\e]20;/home/alexsson/Downloads/alternativ.png;\a\e\\'
그럼에도 불구하고 이는 다소 위험한 기능이라는 점을 유의하시기 바랍니다 rxvt
. 예를 들어, rxvt
Linux에서 루트로 실행 중이고 cat malicious-file
이와 유사한 파일을 실행하는 경우 \e]20;/dev/watchdog\a
(워치독이 있는 시스템에서) 시스템은 몇 초 후에 재부팅됩니다.