我正在尝试为基于Linux的系统找到一个终端模拟器,它允许我根据我正在运行的应用程序更改背景。我认为这对于一些OSC转义序列来说应该很容易,但我找不到任何关于有任何终端支持它的文档。
有什么建议吗?
答案 0 :(得分:5)
如果您的终端仿真器支持背景颜色消除(BCE),您可以使用“擦除显示”转义序列来设置显示器的背景颜色。例如,这会在bash中将背景设置为红色:
tput setab 1; tput clear
tput setab 1
将“ANSI背景颜色”设置为1(红色)。 put clear
清除屏幕,通常是通过发出代码将光标移动到顶部/左上角并清除显示。如果您不想删除整个显示,只需从当前行擦除到显示的末尾:
tput setab 1; tput ed
如果您的终端仿真器支持BCE,则清除部分显示的各种命令将使用当前背景颜色填充已清除区域。您可以使用tput
:
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
。
当然,如果你对远程主机做的任何事情改变了背景颜色,它将覆盖你的颜色。
答案 1 :(得分:1)
您可以使用xtermset使用xterm执行此操作:
xtermset -bg darkred
或xtermcontrol:
xtermcontrol --bg=darkred
答案 2 :(得分:0)
我将xfce终端用于cmus,并根据封面更改背景。为了更改背景,我使用sed
-sleep
-sed
使图像变了(很想知道更好的方法):
sed -i "s:/path/to/old/image:null:g" $HOME/.config/xfce4/terminal/terminalrc ; \
sleep 1; \
sed -i "s:null:/path/to/new/image:g" $HOME/.config/xfce4/terminal/terminalrc