
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
/ ^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
몇 초 후에 시스템이 재부팅됩니다.