コンソール/仮想端末で利用可能なすべての色を変更する方法はありますか?
コンソールとは、CTRL + ALT + F1を押した後に表示されるもので、xtermやurxvtのようなものではありません。つまり、変更することを意味すると思います。
次のようにエスケープ シーケンスを使用して 8 つの色を変更できます。
echo -en "\e]PY######"
ここで、Y は色の数値 ID (0 ~ 7) であり、###### は 16 進数の色の値です。
私の最終的な目標は、コンソールでも X でも vim が同じように表示されるようにしたいので、solarized カラー スキームをコンソールに移植することです。
これに関して何か提案はありますか?
xterm の htop:
xterm の htop、ソラリゼーションされた色
8 色を適用した後のコンソールの htop:
コンソールのhtopで8色を適用した後、
答え1
TTY フレームバッファ コンソールでは、カーネルをハッキングせずに 8 色から 16 色以上を表示する方法はありません。次の引用を参照してください。「Linux フレームバッファは 256 色 (またはそれ以上) をサポートしていますが、Linux コンソール ドライバーはサポートしていません。そのため、フレームバッファの有無にかかわらず、コンソール アプリケーションは Linux コンソール上で 16 色に制限されます。」
したがって、16 色または 8 色以上は使用できません。~/.bashrc で説明したのと同じコマンドを使用して、フレームバッファ ターミナル (ctrl+alt+1) の色を変更する方法についてのチュートリアルがあります。TTY チュートリアルの色
答え2
このbash関数をコンソールで試してみましょう。当然ですが、Xターミナルでは動作しません(タブのせいだと思います)。特に最後に使用した3つのファイルを確認してください。
/sys/module/vt/parameters/default_red
/sys/module/vt/parameters/default_grn
/sys/module/vt/parameters/default_blu
clr () {
clear # GFX bug otherwise
setterm -regtabs 4
Color_names="bla red gre yel blu mag cya whi"
Color_arr=($Color_names)
tput setaf 4
tput setab 7
echo -n " normal "
tput sgr0
echo -n " "
tput setaf 7
tput setab 4
echo " bright "
tput sgr0
for cmd in sgr0 bold
do
tput $cmd
for m in 0 1 2 3 4 5 6 7
do
tput setaf $m
echo -n ${Color_arr[$m]}" "
done
done
echo
tput sgr0
cat /sys/module/vt/parameters/default_red \
/sys/module/vt/parameters/default_grn \
/sys/module/vt/parameters/default_blu | sed s/,0/", "/g | \
sed s/^0/" "/g | \
tr "," "\t"
}
コメントへの返信として編集
たとえば、緑のファイル ( sys/module/vt/parameters/default_grn
)の 2 番目の数字170
を - に変更すると、2 番目の色 (インデックス 1) には赤と同じ量の緑が含まれ、青は含まれなくなります (少なくとも私の場合は、 に対応する数字が にありdefault_red
170
、0
にあるためdefault_blu
)。
次に、 と入力しますtput setaf 1; echo hi
。ここでは、前景色をインデックス 1 の色 (変更した色) に設定し、それを印刷します。(コマンドを区切るためにコロンが付いたワンライナーに注意してください。そうしないと、プロンプトがtput
その間の をリセットする可能性があります。)
いつもと同じようであれば、もう一度試してecho -n '\033]R'
、tput
もう一度行を入力してみて下さい。両方「こんにちは」は黄色っぽい感じになるはずです。
動作するかどうか(または動作しないかどうか)をお知らせください。