我正在尝试为基于Linux的系统找到一个终端模拟器,它允许我根据我正在运行的应用程序来更改背景.我认为这对于一些OSC转义序列来说应该很容易,但我找不到任何关于有任何终端支持它的文档.
有什么建议?
如果您的终端仿真器支持背景颜色消除(BCE),您可以使用"擦除显示"转义序列来设置显示器的背景颜色.例如,这会在bash中将背景设置为红色:
tput setab 1; tput clear
Run Code Online (Sandbox Code Playgroud)
tput setab 1将"ANSI背景颜色"设置为1(红色).put clear通常通过发出代码将光标移动到左上角并清除显示来清除屏幕.如果您不想删除整个显示,只需从当前行擦除到显示的末尾:
tput setab 1; tput ed
Run Code Online (Sandbox Code Playgroud)
如果您的终端仿真器支持BCE,则清除部分显示的各种命令将使用当前背景颜色填充已清除区域.您可以使用以下命令判断终端仿真器是否支持BCE tput:
tput bce && echo Yes || echo No
Run Code Online (Sandbox Code Playgroud)
如果支持BCE,则显示"是".
要使用它,您可以使用shell函数(或脚本文件)来包装要为其设置颜色的命令.例如,在bash中,这将在运行ssh时将显示设置为蓝色:
ssh () {
trap 'tput sgr0; tput ed' RETURN;
tput setab 4; tput ed
command ssh $*;
}
Run Code Online (Sandbox Code Playgroud)
使用trap确保它在函数返回时重置背景颜色(和其他文本属性).我在tput ed这里使用过,所以它只影响运行ssh命令时输出行的背景颜色.tput clear如果您要填充整个显示,并且不介意在命令的开头(和/或结束)删除当前内容,则可以使用.
当然,如果您使用远程主机执行的任何操作会更改背景颜色,它将覆盖您的颜色.
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |