回答:
Thomas Dickey(xtermのメンテナー)からの返信メールにはこれがあります。特にについての部分に注意してください?
。Ps = 4
指し、OSC Ps ; Pt ST
どこOSC
で(「オペレーティングシステムの制御」接頭辞)ESC ]
とST
(「文字列ターミネーター」接尾辞)です\
(バックスラッシュ)。これ4
は、OSCの可能なサブコマンドの1つです。
パレット全体では、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
が有効になっているかどうかを反映しておらず、を介しOSC 4 ; c ; ? ST
て利用可能な〜260色をクロールしても、バックグラウンドに追従せず、リバースビデオで変更することも表示されません。多くのユーザーが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の外観を変更することを望んでいません。