我正在尝试更改 Solaris 中 tty 的颜色。我指的不是 Xterm 或 termcap,而是 TTY 本身。
我是一名 FreeBSD 用户。例如,您可以直接从 VT 驱动程序更改颜色,该驱动程序是带有参数的控制台驱动程序:
kern.vt.color."colornum".rgb="colorspec"
在 Solaris 中可以这样做吗?我没能完成这个任务。
答案1
最初的 Sun 控制台是单色的;较新的版本(2000 年之后)提供了 ANSI 颜色。 ncurses terminfo 中的评论太阳色可以帮助您确定这是否适用于您:
# Most of the current references to sun-color are from users wondering why this
# is the default on install. Details from reading the wscons manpage, adding
# cub, etc., here (rather than in the base sun-il entry) since it is not clear
# when those were added -TD (2005-05-28)
#
# According to wscons manpage, color is supported only on IA systems.
# Sun's terminfo entry documents bold and smul/rmul capabilities, but wscons
# does not list these. It also sets ncv#3, however that corresponds to
# underline and standout.
#
# Since the documentation and terminfo do not agree, see also current code at
# https://web.archive.org/web/20091231042744/http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c
#
# That (actually a different driver which "supports" sun-color) also supports
# these features:
# vpa=\E[%i%p1%dd
# hpa=\E[%i%p1%d`
# cbt=\E[Z
# dim=\E[2m
# blink=\E[5m
# It supports bold, but not underline -TD (2009-09-19)
Sun 的文档(现在的 Oracle)将此称为相干控制台,提供的文档很少。尽管它早在 2005 年就已推出,但在发行说明中提到了“太阳色”作为新功能2007年8月:
SPARC:更改控制台 $TERM 值的设置方式
索拉里斯 10 8/07:$TERM 值现在是动态派生的,并且取决于控制台正在使用的终端模拟器。在基于 x86 的系统上,$TERM 值是太阳色,因为始终使用内核的终端模拟器。在基于 SPARC 的系统上,$TERM 值如下:
sun-color
如果系统使用内核的终端仿真器,则该值用于 $TERM。
sun
如果系统使用 PROM 的终端仿真器,则该值用于 $TERM。
此更改不会影响串行端口的终端类型设置方式。您仍然可以使用 svccfg 命令修改 $TERM 值,如下例所示:
但给出的例子很奇怪,因为控制台的行为与 xterm 不匹配:
# svccfg
svc:> select system/console-login
svc:/system/console-login> setprop ttymon/terminal_type = "xterm"
svc:/system/console-login> exit
这文档对于“真正的”控制台终端,wscons说
注意:VT100 遵循 ANSI X3.64 标准。但是,由于 VT100 具有 ANSI X3.64 的非标准扩展功能,因此它与 Sun 终端仿真器不兼容。
指的是滚动的完成方式,并且由于 xterm 模拟 VT100(以及 DEC 终端的更高级别模型),因此该示例是有缺陷的。