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

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

コンソール/仮想端末で利用可能なすべての色を変更する方法はありますか?
コンソールとは、xtermやurxvtのようなものではなく、CTRL + ALT + F1を押した後に取得することを意味します。だからそれは変化を意味していると思います。

次のようにエスケープシーケンスを使用して8つの色を変更できます。

echo -en "\e]PY######"

ここで、Yは色の数値ID(0〜7)、######は16進カラー値です。

私の究極の目標は、Solarizedカラースキームをコンソールに移植することです。なぜなら、コンソールにあるのか、vimにあっても同じように見えたいからです。

これに提案がありますか?

xtermのhtop:
xtermのhtop、夏時間の色

8つの色を適用した後、コンソールのhtop:
htopコンソールで8つの色を適用したら、次のことができます。

答え1

TTYフレームバッファコンソールは、カーネルハッキングなしで8〜16色以上を持つことはできません。次の引用を参照してください。 「Linuxフレームバッファは256(またはそれ以上)の色をサポートしていますが、Linuxコンソールドライバはサポートされていません。したがって、コンソールアプリケーションはまだ16色に制限されています。フレームバッファの有無にかかわらずLinuxコンソール。」

したがって、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の色(変更色)に設定してから印刷します。 (1行のコマンドをコロンで区切る必要があります。そうしないと、プロンプトはtputその間にコマンドをリセットできます。)

いつものように見える場合は、行をもう一度やり直してくださいecho -n '\033]R'tput今、両方「こんにちは」は黄色でなければなりません。

うまくいったら(またはうまくいかない場合)教えてください。

関連情報