콘솔/가상 터미널의 색상 변경

콘솔/가상 터미널의 색상 변경

콘솔/가상 터미널에서 사용 가능한 모든 색상을 변경할 수 있는 방법이 있습니까?
콘솔이란 xterm이나 urxvt와 같은 것이 아니라 CTRL + ALT + F1을 누른 후에 얻는 것을 의미합니다. 그래서 내 생각엔 그게 변경을 의미할 것 같아

다음과 같이 이스케이프 시퀀스를 사용하여 8가지 색상을 변경할 수 있습니다.

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

여기서 Y는 색상의 숫자 ID(0~7)이고 ######은 16진수 색상 값입니다.

내 궁극적인 목표는 솔라라이즈된 색상 구성표를 콘솔에 이식하는 것입니다. 왜냐하면 콘솔에 있든 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, 그리고 0) default_blu.

이제 tput setaf 1; echo hi. 여기서 전경색을 인덱스 1(변경한 색상)의 색상에 넣은 다음 인쇄합니다. (명령을 구분하기 위해 콜론이 있는 oneliner를 참고하세요. 그렇지 않으면 프롬프트가 그 tput사이를 재설정할 수 있습니다.)

항상 동일하게 나타나면 라인을 다시 시도 echo -n '\033]R'하십시오 tput. 지금,둘 다"안녕하세요"는 일종의 노란색이어야 합니다.

작동하게 되었는지 여부를 알려주세요.

관련 정보