web-dev-qa-db-ja.com

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

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

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

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

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

私の最終的な目標は、ソーラー化されたカラースキームをコンソールに移植することです。コンソールにいるのかXにいるのかに関係なく、vimをまったく同じように見せたいからです。

これについて何か提案はありますか?

xtermのhtop:
xtermのhtop、ソラリゼーションカラー

8色を適用した後のコンソールのhtop:
コンソールのhtop、8色を適用した後

7
Daniel Jour

TTYフレームバッファーコンソールには、カーネルハッキングなしで8-16色を超える色を表示する方法はありません。次の引用を参照してください。 Linuxコンソールでは16色に制限されています。フレームバッファかどうかは関係ありません。」

したがって、16色または8色を超えることはできません。 〜/ .bashrcで説明したのと同じコマンドを使用して、フレームバッファターミナル(別名ctrl + alt + 1)の色を変更する方法のチュートリアルがあります。 TTYチュートリアルの色

6
IBr

コンソールでこの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_red170にあり、0default_bluにあるためです。

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

いつもと同じように見える場合は、echo -n '\033]R'を試し、次にtput行をもう一度試します。これで、両方 "こんにちは"は黄色のようになります。

動作するかどうかを知らせてください。

3
Emanuel Berg