实际上,对于
xterm和兼容的终端,这是可能的。
例如xtermcontrol使用OSC 10
控制序列来检索默认的前景色/背景色。自 2002 年以来,它已记录在 xterm 中。
对于其他终端:
- 在 RHEL 5 中,“终端”程序是 gnome-terminal 2.16.0;该版本无法识别
OSC 10
(使用等效的 CentOS 5 测试)。
- 这个问题是在 2010 年提出的,指的是 Red Hat企业版,如果有的话,它的更新速度比 Debian 慢。
- 随着时间的推移,Debian 7(2012 年初)上的 gnome-terminal 3.4.1.1 也无法识别控制序列。
- 最后,在带有 3.14.1(2014 年末)的 Debian 8 中,该功能得到了认可。
- CentOS 7 的 gnome-terminal 3.14.3 识别控制序列。
当它被添加时很好奇,请记住 VTE 的开发人员不编写文档。所以...研究 git log 显示
commit 1b8c6b1aac587b79476a60a5830385abc939430d
Author: Egmont Koblinger <egmont@gmail.com>
Date: Wed Jan 22 00:13:51 2014 +0100
emulation: Add support for OSC 1?1[017] (fg, bg, highlight colors)
https://bugzilla.gnome.org/show_bug.cgi?id=567444
另一方面,默认颜色与当前颜色不同。自1999 年补丁 #93以来,用户已经能够使用 xterm使用DECRQSS
控制序列执行此操作。也就是说,将终端置于原始模式并执行类似的操作
printf '\033P$m\033\\'
会让它回复用 SGR 参数填充的字符串。
如果使用 SGR 设置颜色,则这些代码将成为回复的一部分,例如
\033P1$r0;33m\033\\
表示前景色编号 3(编码为33
)。
您可以停在那里(因为您可以提取这些参数并在以后重新使用它们将终端设置为相同的状态),但随后可以使用OSC 4
. 您将使用颜色编号(来自 SGR 序列),并发送如下内容:
printf '\033]4;3;?\033\\'
所以用 xterm 肯定是可行的。DECRQSS
在xterm 的下一次更新中将有一个演示/测试脚本。
对于其他程序,您需要更多时间: