更改控制台/虛擬終端中的顏色

更改控制台/虛擬終端中的顏色

有沒有辦法改變控制台/虛擬終端中的所有可用顏色?
我所說的控制台是指按 CTRL + ALT + F1 後得到的結果,而不是 xterm 或 urxvt 之類的東西。所以,我想這意味著改變

我可以使用轉義序列來變更 8 種顏色,如下所示:

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

其中 Y 是顏色的數字 ID(0 到 7),###### 是十六進位顏色值。

我的最終目標是將 Solarized 配色方案移植到控制台,因為無論我是在控制台還是 X 中,我都希望看起來一樣 vim。

對此有何建議?

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 終端中不起作用(我認為是因為選項卡)。特別檢查最後使用的三個文件,即

/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) 中的第二個數字更改為170- 這將使第二種顏色(索引為1)的綠色與紅色一樣多,並且沒有藍色(至少在我的情況下,因為我在中具有相應的數字default_red 170,並0default_blu)中。

現在,輸入tput setaf 1; echo hi.在這裡,您將前景色設定為索引為 1 的顏色(您更改的顏色),然後列印它。 (請注意用冒號分隔指令的單行符,否則您的提示可能會重設tput之間的指令。)

如果它看起來像往常一樣,請嘗試echo -n '\033]R'然後tput再次該行。現在,兩個都「hi」應該是黃色的。

如果你讓它工作(或不工作),請告訴我。

相關內容