我目前正在嘗試爲基於Linux的系統找到一個終端模擬器,它允許我根據正在運行的應用程序更改背景。我認爲這對於一些OSC轉義序列應該很容易做到,但是我找不到任何有關支持它的終端的文檔。允許動態更改背景顏色的終端模擬器
有什麼建議嗎?
我目前正在嘗試爲基於Linux的系統找到一個終端模擬器,它允許我根據正在運行的應用程序更改背景。我認爲這對於一些OSC轉義序列應該很容易做到,但是我找不到任何有關支持它的終端的文檔。允許動態更改背景顏色的終端模擬器
有什麼建議嗎?
如果您的終端仿真程序支持背景顏色擦除(BCE),您可以使用「擦除顯示」轉義序列來設置顯示器的背景顏色。例如,該設置背景爲紅色在bash:
tput setab 1; tput clear
tput setab 1
設置 「ANSI背景顏色」 爲1(紅色)。 put clear
清除屏幕,通常通過發出代碼將光標移動到頂部/左側角並清除顯示。如果你不想刪除整個顯示器,你可以從當前行擦除到顯示的末尾:
tput setab 1; tput ed
如果你的終端仿真器支持BCE,各種命令,顯示清晰的部分將用當前背景顏色填充已清除的區域。你可以告訴如果你的終端仿真器支持使用tput
BCE:
tput bce && echo Yes || echo No
這將顯示「是」如果支持BCE。
要利用此功能,您可以使用shell函數(或腳本文件)來包裝要爲其設置顏色的命令。例如,在bash這將在顯示器運行的ssh當設置爲藍色:
ssh() {
trap 'tput sgr0; tput ed' RETURN;
tput setab 4; tput ed
command ssh $*;
}
使用trap
確保它重置的背景顏色(以及其他文本屬性)在函數返回時。我在這裏使用tput ed
,所以它隻影響運行ssh命令時輸出行的背景顏色。如果您希望填充整個顯示器,並且您不介意在命令的開始(和/或結束)刪除當前內容,則可以使用tput clear
。
當然,如果您使用遠程主機進行的任何操作都會更改背景顏色,它將會覆蓋您的顏色。
這不是我的意思。你在談論的是改變當前終端會話的默認背景顏色值(或使用陷阱時的當前函數調用),這是一個非常好的解決方案!我讚賞這一點,並認爲我會找到它的用處。這不是我想到的,但這可能是爲什麼,我腦海中沒有實現的原因。我希望能夠改變終端的圖形(X部分)中的背景顏色,以便能夠使用諸如透明度效果之類的東西,並通常將背景色調爲某種顏色。 – Hobblin
我認爲Xterm會讓你以編程方式改變使用OSC轉義序列的終端配色方案。能否在同一個shell會話中運行命令並更改終端外觀很重要,還是隻需要在具有所需外觀的新終端中運行命令就足夠了?後者可以通過幾種不同的自動工作方式在Terminal上完成。如果這可能有幫助,我可以在另一個答案中發佈它們。 –
OSC esc-seq做它是我想要做的,我真的不想開始一個新的終端。 – Hobblin
您可以使用xterm使用xtermset做到這一點:
xtermset -bg darkred
或xtermcontrol:
xtermcontrol --bg=darkred
我覺得ETERM可以做到這一點 –
看起來是這樣!謝謝! – Hobblin