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


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.