Answers:
Thomas Dickey(xterm的维护者)发回的电子邮件包含此内容。特别注意有关的部分?
。的Ps = 4
是指OSC Ps ; Pt ST
其中OSC
(“操作系统控制”前缀)是ESC ]
和ST
(“字符串终结者”后缀)是\
(反斜杠)。这4
是OSC可能的子命令之一。
对于整个调色板,可以使用88/256颜色扩展名进行设置/检索。在ctlseqs.txt中,此处总结如下:
Ps = 4 ; c ; spec -> Change Color Number c to the color specified by spec. This can be a name or RGB specification as per XParseColor. Any number of c/spec pairs may be given. The color numbers correspond to the ANSI colors 0-7, their bright versions 8-15, and if supported, the remainder of the 88-color or 256-color table. If a "?" is given rather than a name or RGB specification, xterm replies with a control sequence of the same form which can be used to set the corresponding color. Because more than one pair of color number and specification can be given in one control sequence, xterm can make more than one reply.
稍后,文档中还会介绍更多OSC子命令,Ps = 10
和Ps = 11
以及其他命令。
Ps = 1 0 -> Change VT100 text foreground color to Pt. Ps = 1 1 -> Change VT100 text background color to Pt.
示例-此示例使用Ps = "11"
(从上方)和Pt = "?"
插入背景中,查询背景OSC Ps ; Pt ST
。在回显中,\033
正用于转义和\\
最后的反斜杠。
echo -en "\033]11;?\033\\"
输出:
^[]11;rgb:0000/0000/0000^[\
警告:返回的颜色不会反映是否-rv
启用了反向视频(例如),并且通过〜260种可用颜色进行爬网时OSC 4 ; c ; ? ST
,不会显示任何都跟随背景并随着反向视频而变化的颜色。由于许多用户使用just设置了深色背景xterm -rv
,这使确定背景是否实际上是深色变得复杂。大多数颜色也不会调整为-rv
。
一个执行完整查询并实际上捕获来自xterm的答复的脚本:
#!/bin/bash
success=false
exec < /dev/tty
oldstty=$(stty -g)
stty raw -echo min 0
col=11 # background
# OSC Ps ;Pt ST
echo -en "\033]${col};?\033\\" >/dev/tty # echo opts differ w/ OSes
result=
if IFS=';' read -r -d '\' color ; then
result=$(echo $color | sed 's/^.*\;//;s/[^rgb:0-9a-f/]//g')
success=true
fi
stty $oldstty
echo $result
$success
有点儿
将设置放入〜/ .Xdefaults文件中:
xterm*foreground: blue
xterm*background: white
在您的外壳中,您只需grep值:
awk '/xterm\*foreground:(.*)/ { print $2 }' < .Xdefaults
否则很难获得xterm的一些内部值。
实际上,我认为您想要这样做:
% xrdb -query
这将为您列出设置。也可以看看:
http://docstore.mik.ua/orelly/unix3/upt/ch06_08.htm
要修改运行时,请使用:
% echo "some*setting: somevalue" | xrdb -merge
-query
列出所有资源。指定资源在我的Ubuntu上不起作用。
xrdb -query
只是给您所有资源的列表..您必须再次执行awk / grep才能到达前台。那就是我已经承认的。xrdb -merge
在这里完全是题外话,因为coz OP不想修改xresources,而是要修改bashprompt的外观。