터미널 에뮬레이터가 지원하는 색상 수 확인


21

터미널 에뮬레이터가 지원하는 색상 수를 확인하는 신뢰할 수있는 방법이 있습니까?

경우 echo $TERM인쇄 xterm, 그 않습니다 명백하게 얼마나 많은 색상을 내 터미널 에뮬레이터 지원 말해? 이 정보를 확실하게 확인하려면 어떻게해야합니까?


답변:


20

값은 $TERM지원되는 색상 수에 대한 많은 정보를 제공하지 않습니다. 많은 터미널이 자신을로 광고하고 xterm여러 색상을 지원할 수 있습니다 (2, 8, 16, 88 및 256은 공통 값).

OSC 4 ; c ; ? BEL 제어 순서를 사용하여 각 색상의 값을 쿼리 할 수 ​​있습니다 . 색상 번호 c가 지원되고 단말기가이 제어 순서를 이해하면 단말기는 색상 값으로 응답합니다. 색상 번호가 지원되지 않거나 단말기가이 제어 순서를 이해하지 못하면 단말기는 아무것도 응답하지 않습니다. 다음은 색상 42가 지원되는지 여부를 쿼리하는 bash / zsh 스 니펫입니다 (필요한 경우 터미널로 리디렉션).

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

널리 사용되는 터미널 중에서 VTE 라이브러리 (Gnome-terminal, Terminator, Xfce4-terminal 등) 기반 xterm 및 터미널이이 제어 시퀀스를 지원합니다. rxvt, konsole, screen 및 tmux는 지원하지 않습니다.

나는 더 직접적인 방법을 모른다.


감사합니다 @Gilles. 멋지다. 무엇을 물어봐도 read -d $'\a' -s -t 1될까요?
— Amelio Vazquez-Reina

1
@intrpc \a1 초의 시간 초과로 반향 입력없이 첫 번째 (종 문자) 까지 입력을 읽습니다 .
— Gilles 'SO- 악의를 그만두십시오

5
@ l0b0 tput colors은 terminfo 데이터베이스를 쿼리합니다. 당신이 가질 가능성이 있습니다 TERM=xterm. Xterm은 버전 및 컴파일 및 런타임 옵션에 따라 최소 2, 8, 16, 88 또는 256 색을 지원할 수 있지만 terminfo 데이터베이스는 하나의 값만 저장할 수 있습니다. eg를 설정할 수 TERM=xterm+256color있지만 termcap / terminfo 데이터베이스에이 항목이없는 시스템에 로그인하면 짜증이 날 것입니다.
— Gilles 'SO- 악마 중지

2
@ l0b0 파이프는 분명히 터미널과 관련이 없습니다. 터미널 ( printf … >/dev/tty) 로 인쇄 한 다음 터미널 ( read … </dev/tty) 에서 읽어야합니다 . Xterm은 OSC 4; …; ? BEL키 입력을 주입 하여 시퀀스에 응답합니다 .
— Gilles 'SO- 악마 그만'

5
정말 고마워요! XTerm이 실제로 지원 하는 색상 수를 결정하는 스크립트 는 다음과 같습니다 .
— l0b0


9

당신이 사용할 수있는

$ tput colors

내 데비안에서 설치 tput은 ncurses-bin기본적으로 설치되는 패키지의 일부입니다 .


6
터미널을 통해 실제로 환경에 보고 하는 색상 수를 알려주는 것입니다. TERM실제로 적절한 색상을 지원할 수있는 색상 수는 없습니다.TERM
— MestreLion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.