다양한 환경에서 256색을 활성화하는 방법에 대한 질문이 많습니다. 저는 그 반대를 원했습니다. 모든 앱을 제가 직접 선택한 16가지 색상 팔레트로 제한했습니다. 그 이유는 애플리케이션이 읽기 어려운 색상을 사용하는 것을 방지하고 싶기 때문입니다.
bashrc 에서 설정을 시도했지만 TERM=xterm
뚜렷한 효과가 없었습니다.
답변1
이는 여러 가지 이유로 불가능합니다.
애플리케이션은 여전히 다양한 색상 시스템을 사용하여 터미널에 사용할 색상을 알려줍니다. ECMA-48:1976의 원래 1970년대 8색 시스템, 1990년대 AIXterm 16색 시스템, ISO 8613-6/ITU T.416색인1990년대의 컬러 시스템과 ISO 8613-6/ITU T.416직접1990년대의 컬러 시스템.
첫 번째 이유: 이 네 가지 중 세 가지만이 색상 팔레트와 관련되어 있습니다. 직접 색상의 경우에는 그렇지 않습니다. 응용 프로그램이 직접 색상 제어 시퀀스를 내보내는 경우 응용 프로그램을 직접 재구성하거나 다시 코딩하여(어떤 방식으로든) 사용된 색상을 변경하는 경우를 제외하고 해당 색상을 변경할 수 없습니다. (일부 터미널 에뮬레이터는 직접 색상을 잘 지원하지 않으며 직접 색상 제어 시퀀스를 사용하라는 지시가 있을 때 팔레트를 포함합니다. 그러나 이는 가장 근접 일치 메커니즘 중 하나이므로 합리적으로 효율적인 제어 형태를 제공하지 않습니다. 그리고 이러한 터미널 에뮬레이터는 일반적인 경우는 아닙니다.) 또한 TUI 응용 프로그램에는 범용 "색 구성표" 사용자 기본 설정 시스템이 없습니다(일부 GUI 응용 프로그램의 GUI에는 이러한 시스템이 있습니다).
두 번째 이유: 팔레트가 16개 항목이 아닙니다. 이러한 팔레트가 있는 거의 모든 터미널 에뮬레이터에는 VGA 스타일 256개 항목 팔레트가 있으며 이는 8색 및 16색 제어 시퀀스에 사용되는 것과 동일한 팔레트입니다. (Microsoft 터미널 사람들은 이를 별도로 유지할 가능성을 고려했지만 내가 아는 한 실제로 그렇게 한 터미널 에뮬레이터 작성자는 없습니다.) 팔레트 자체에는 mod-16 또는 mod-8 제한이 없습니다.
세 번째 이유: 16색은 간단하지 않습니다. 컬러 터미널이 나왔을 때 처음에는 (일부 세부 사항은 무시하고) 8가지 표준 색상이 있었습니다. 16가지 색상은 확장이므로 굵게, 깜박임 및 밑줄 텍스트 속성을 색상과 혼동할 수 있습니다. 지저분한 이력과 세부 사항은 이 답변의 범위를 벗어나며, 궁극적으로는 지저분한 부분을 정리해야 한다는 압박감이 있지만 결과는 그렇습니다.지금16가지 색상 중 최소 8가지 색상을 언제, 어떻게 얻을 수 있는지에 대해서는 의견이 분분합니다. 귀하의 신청서가 반드시 귀하의 요청에 동의하는 것은 아닙니다.
아이러니하게도 당신이 설정한 아이디어는 특히 심각한 분열을 일으키는 방법 중 하나이기 때문에 TERM
특히 나쁩니다. linux
(또한 다음 사실을 무시합니다.사용 중인 터미널과 일치하지 않는 잘못된 터미널 유형을 설정하는 것은 좋지 않습니다.,지금 바로그 자체가 답이다.) 이는 애플리케이션에 알리는 방법 중 하나입니다.사용하지 마세요AIXterm 16색 시스템이지만 대체 색상 속성을 남용하는 8색 시스템을 사용합니다.
네 번째 이유: 16색은 간단하지 않습니다. 불행하게도 일부 터미널 에뮬레이터는 화면의 "밝은/어두운 배경" 설정 및 반전 비디오 속성과 같은 항목을 기반으로 팔레트의 처음 16개 항목을 동적으로 변경합니다. 그들은 당신과 당신의 지원서보다 더 잘 알고 있기 때문입니다. ☺
다섯 번째 이유: 터미널과 터미널 에뮬레이터에서는 이를 구성할 수 없습니다. 응용 프로그램이 이러한 제어 시퀀스를 발행하면 256색 인덱스 색상이나 24비트 직접 색상을 이해하지 못한다는 사실을 터미널(에뮬레이터)에 알릴 수 없습니다. 내가 아는 한, 터미널 에뮬레이터에는 제어 시퀀스 처리를 색상으로 변환하는 스위치가 없습니다.떠나다.
따라서 사람이 할 수 있는 유일한 일은 애플리케이션에 알리는 것입니다.전송하지 않음터미널에 이해를 거부하라고 지시하는 대신 시퀀스를 제어합니다. 이론은 (옳은) 터미널 유형에는 환경 변수에 -16color
or -mono
또는 유사한 접미사가 붙 TERM
으며 이는 terminfo 라이브러리가 색상 지정을 위한 제어 시퀀스로 생성할 수 있는 것을 제한하기 때문에 응용 프로그램은 이보다 더 많은 색상을 지정하는 방법을 모릅니다. 이는 여섯 번째 이유로 이어진다.
여섯 번째 이유: 응용 프로그램은 terminfo를 사용하지 않고 색상을 고정하는 경향이 있습니다.
다시 말하지만, 이 답변의 범위를 벗어나는 역사의 혼란이 있지만 모든 사람이 terminfo setab
와 setaf
함수를 사용한다는 아이디어는 단지 헛된 꿈일 뿐입니다. ㅏ많은의 응용 프로그램에는 색상 제어 시퀀스가 코드에 직접 내장되어 있습니다. 여기에는 특히 terminfo보다 최신이고 대규모 터미널 유형 데이터베이스에서 작동하지 않는 언어로 (반)이식 가능한 라이브러리를 사용하는 경향이 있는 Python 및 Go와 같은 프로그래밍 언어로 작성된 애플리케이션이 포함됩니다. (내가 만난이 파이썬, 예를 들어 얼마 전의 경우입니다. ) 그러나 C로 작성된 일부 일반적인 GNU 도구에서도 이 작업이 수행되는 것을 찾을 수 있습니다.
답변2
의견에서 : TERM=linux
작동합니다. 저도 시도해봤는데 TERM=xterm-16color
안되더라구요)