コンソール/仮想端末の色を変更する

コンソール/仮想端末の色を変更する

コンソール/仮想端末で利用可能なすべての色を変更する方法はありますか?
コンソールとは、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 1700にあるためdefault_blu)。

次に、 と入力しますtput setaf 1; echo hi。ここでは、前景色をインデックス 1 の色 (変更した色) に設定し、それを印刷します。(コマンドを区切るためにコロンが付いたワンライナーに注意してください。そうしないと、プロンプトがtputその間の をリセットする可能性があります。)

いつもと同じようであれば、もう一度試してecho -n '\033]R'tputもう一度行を入力してみて下さい。両方「こんにちは」は黄色っぽい感じになるはずです。

動作するかどうか(または動作しないかどうか)をお知らせください。

関連情報