
當我在 tmux 中時,我無法使用 printf 命令。
動態變更背景的命令是:
printf "\e]20;/home/alexsson/Downloads/alternativ.png;\a"
我可以直接在 urxvt 中執行此操作:
還有螢幕內:
但是這個 printf 指令在 tmux 中根本不起作用:
知道如何讓它在 tmux 中工作嗎?
PS:這裡有一個類似的問題:tmux 和控制序列字元問題。然而,如果不使用正確的搜尋字詞,就很難找到這個問題。我認為我的帖子對於更多不知道使用哪些搜尋術語但更常見的用戶來說會很有趣(例如簡單地更改背景)。文件中也沒有太多關於此的內容。
答案1
urxvt
、tmux
和screen
是三個不同的終端模擬器,第一個使用 X11 作為顯示/輸入的後端,而其他兩個使用主機終端。
tmux
它們screen
是真正的終端模擬器,它們實現了許多透過一些轉義序列啟動的功能(如粗體字元屬性、清除螢幕...),但設定背景圖片不屬於他們支援的功能。
另請記住,screen
/tmux
會話可以附加到任何類型的主機終端,甚至可以一次附加到多個主機終端(使用-x
),有些可能支援該功能,有些可能不支援。
screen
將傳遞它無法識別的轉義序列,tmux
不會。以 OSC ( ) 開頭的序列以 BEL ( / )\e]
結尾。當看到 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 上以 root 身分執行並執行cat malicious-file
包含類似內容的檔案\e]20;/dev/watchdog\a
(在有看門狗的系統上),那麼幾秒鐘後就會重新啟動您的系統。