추가 읽기

추가 읽기

색상과 관련된 XTerm(이 경우 UXTerm)의 동작을 잘 이해하지 못합니다. 저는 Alacritty와 UXTerm에 Solarized Light 색상 테마를 사용하고 있습니다. 그것들은 거의 동일합니다:

~/.alacritty.yml:

# Colors (Solarized Light)
colors:
  # Default colors
  primary:
    background: '0xfdf6e3'
    foreground: '0x586e75'

  # Normal colors
  normal:
    black:   '0x073642'
    red:     '0xdc322f'
    green:   '0x859900'
    yellow:  '0xb58900'
    blue:    '0x268bd2'
    magenta: '0xd33682'
    cyan:    '0x2aa198'
    white:   '0xeee8d5'

  # Bright colors
  bright:
    black:   '0x002b36'
    red:     '0xcb4b16'
    green:   '0x586e75'
    yellow:  '0x657b83'
    blue:    '0x839496'
    magenta: '0x6c71c4'
    cyan:    '0x93a1a1'
    white:   '0xfdf6e3'

~/.Xresources:

#define S_base03        #002b36
#define S_base02        #073642
#define S_base01        #586e75
#define S_base00        #657b83
#define S_base0         #839496
#define S_base1         #93a1a1
#define S_base2         #eee8d5
#define S_base3         #fdf6e3
#define S_yellow        #b58900
#define S_orange        #cb4b16
#define S_red           #dc322f
#define S_magenta       #d33682
#define S_violet        #6c71c4
#define S_blue          #268bd2
#define S_cyan          #2aa198
#define S_green         #859900

!fonts&stuff
UXTerm*faceSize: 11
uxterm*eightBitInput: false
UXTerm*faceName: Fira Mono Regular

!Background & foreground
UXTerm*background: S_base3
UXTerm*foreground: S_base00
UXTerm*fading: 40
UXTerm*fadeColor: S_base3
UXTerm*cursorColor: S_base01
UXTerm*pointerColorBackground: S_base1
UXTerm*pointerColorForeground: S_base01

!UXTerm*borderColor: #343434

!Turning off scrollbar
UXTerm*scrollBar:  off

!Starting up with a geometry
UXTerm*vt100*geometry:   160x50

!Colors
!-------------------------
!black
UXTerm*color0: S_base02
UXTerm*color8: S_base03

!red
UXTerm*color1: S_red
UXTerm*color9: S_orange

!green
UXTerm*color2: S_green
UXTerm*color10: S_base01

!yellow
UXTerm*color3: S_yellow
UXTerm*color11: S_base00

!blue
UXTerm*color4: S_blue
UXTerm*color12: S_base0

!magenta
UXTerm*color5: S_magenta
UXTerm*color13: S_violet

!cyan
UXTerm*color6: S_cyan
UXTerm*color14: S_base1

!white
UXTerm*color7: S_base2
UXTerm*color15: S_base3

기민함의 회의:

trueneu@pop-os:~$ env | grep TERM
COLORTERM=truecolor
TERM=xterm-256color

UXTerm 세션:

trueneu@pop-os:~$ env | grep TERM
COLORTERM=truecolor
XTERM_VERSION=XTerm(353)
XTERM_SHELL=/bin/bash
XTERM_LOCALE=en_US.UTF-8
TERM=xterm-256color

그러나 색상과 관련하여 완전히 다른 동작을 나타냅니다.

황홀하다:

빠르게

사용자 경험 용어:

빠르게

Emacs에서는 모든 것이 괜찮지만:

황홀하다:

이맥스

사용자 경험 용어:

이맥스

둘 다 내가 찾은 테스트를 통과했습니다.

#!/usr/bin/env bash

awk 'BEGIN{
    s="/\\/\\/\\/\\/\\"; s=s s s s s s s s;
    for (colnum = 0; colnum<77; colnum++) {
        r = 255-(colnum*255/76);
        g = (colnum*510/76);
        b = (colnum*255/76);
        if (g>255) g = 510-g;
        printf "\033[48;2;%d;%d;%dm", r,g,b;
        printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
        printf "%s\033[0m", substr(s,colnum+1,1);
    }
    printf "\n";
}'

황홀하다:

이맥스

사용자 경험 용어:

이맥스

힌트:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

색상과 동일합니다 ls.

UXTerm infocmp, 도움이 된다면:

    Reconstructed via infocmp from file: /lib/terminfo/x/xterm-256color
xterm-256color|xterm with 256 colors,
    am, bce, ccc, km, mc5i, mir, msgr, npc, xenl,
    colors#0x100, cols#80, it#8, lines#24, pairs#0x10000,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
    clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
    cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
    cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
    dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
    el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
    hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
    il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dS,
    initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
    invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~,
    kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D,
    kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, kb2=\EOE, kbs=^?,
    kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
    kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
    kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q,
    kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
    kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
    kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
    kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
    kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
    kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
    kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q,
    kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~,
    kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
    kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
    kf48=\E[24;6~, kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q,
    kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
    kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,
    kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
    kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
    memu=\Em, oc=\E]104\007, op=\E[39;49m, rc=\E8, rev=\E[7m,
    ri=\EM, rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B,
    rmam=\E[?7l, rmcup=\E[?1049l\E[23;0;0t, rmir=\E[4l,
    rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
    rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
    setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
    setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
    sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
    sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
    smcup=\E[?1049h\E[22;0;0t, smir=\E[4h, smkx=\E[?1h\E=,
    smm=\E[?1034h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
    u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
    u9=\E[c, vpa=\E[%i%p1%dd,

여기에 일부 구성이 누락되어 있습니까? 이것이 XTerm이 작동하는 방식인가요? 어떻게 그 테스트를 통과할 수 있는지 정말 이해가 안 돼요.

편집: Thomas Dickey의 답변에 따라 C 전처리기가 없도록 .Xresources를 재정의하려고 했습니다 #define. 결과는 다음과 같습니다.

!fonts&stuff
UXTerm*faceSize: 11
uxterm*eightBitInput: false
UXTerm*faceName: Fira Mono Regular

!Background & foreground
UXTerm*background: #fdf6e3
UXTerm*foreground: #657b83
UXTerm*fading: 40
UXTerm*fadeColor: #fdf6e3
UXTerm*cursorColor: #586e75
UXTerm*pointerColorBackground: #93a1a1
UXTerm*pointerColorForeground: #586e75

!UXTerm*borderColor: #343434

!Turning off scrollbar
UXTerm*scrollBar:  off

!Starting up with a geometry
UXTerm*vt100*geometry:   160x50

!Colors
!-------------------------
!black
UXTerm*color0: #073642
UXTerm*color8: #002b36

!red
UXTerm*color1: #dc322f
UXTerm*color9: #cb4b16

!green
UXTerm*color2: #859900
UXTerm*color10: #586e75

!yellow
UXTerm*color3: #b58900
UXTerm*color11: #657b83

!blue
UXTerm*color4: #268bd2
UXTerm*color12: #839496

!magenta
UXTerm*color5: #d33682
UXTerm*color13: #6c71c4

!cyan
UXTerm*color6: #2aa198
UXTerm*color14: #93a1a1

!white
UXTerm*color7: #eee8d5
UXTerm*color15: #fdf6e3

-merge단지 다음 사항을 확인하는 대신 설정을 로드하세요 .

xrdb ~/.Xresources

UXTerm을 시작했습니다.

uxterm이 정의되지 않았습니다.

EDIT2: 관련성이 있을 수 있는 세부 사항 하나를 언급하는 것을 잊었습니다. 색 구성표를 제거하면 UXTerm이 최소한 색을 표시하기 시작합니다.비슷한Alacriti의:

uxterm에는 색 구성표가 없습니다.

그래서 방향이 아주 정확합니다. 하지만 이 경우에는 분명히 사용할 수 없습니다.

답변1

Alacritty는 리소스 설정을 무시하고 xterm은 이를 사용합니다. xterm이 이러한 S_xxx이름을 보기 전에 C 전처리기에 의해 사후 처리됩니다.

다음 .Xresources내용을 파일에 복사하고 설정 문제를 표시해 보십시오(일부 값은 정의되지 않음).

> XAPPLRESDIR=/users/tom/app-defaults.orig uxterm
Warning: Color name "S_base3" is not defined
xterm: unable to allocate fg/bg colors
Warning: Color name "S_base1" is not defined
Warning: Color name "S_base00" is not defined

(저는 색상 팔레트 작업에 시간을 보냈습니다.햇볕에 말린, 몇 달 전 X 리소스를 나열하는 대부분의 웹 페이지에 이러한 오류가 있음을 발견했습니다.

수정된 팔레트 사용: 기본적으로 굵은 속성이 있는 경우 xterm은 처음 8개의 ANSI 색상을 8-15로 매핑합니다(물론 일광 팔레트에는 더 밝은 색상이 없습니다). 다음과 같이 비활성화할 수 있습니다.+pc(명령줄 옵션) 또는 해당 리소스boldColors:false

답변2

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\ [\033[00m\]\$ '
  setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1 %d% 미터,
  setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1 %d% 미터,

터미널 유형에 대한 프롬프트가 올바르지 않습니다. 색상 변경을 위한 하드코드된 SGR 제어 시퀀스가 ​​있으며 하드코드된 SGR 제어 시퀀스가 ​​있습니다.잘못된, 다른 터미널 유형의 경우.

  • 당신의 터미널SGR 90-97 및 SGR 100-107에 응답하도록 색상을 8에서 15로 설정하면 그게 전부 setaf횡설수설 입니다 setab. (나머지 횡설수설에서는 SGR 38:5 및 SGR 48:5에 응답하여 색상 16 이상을 설정한다고 지정합니다.분리기 불량으로.)
  • 당신의 팁0~7 색상을 설정하여 8~15 색상을 설정하려고 합니다.대신에, 그리고굵게 켜기(SGR 1을 사용하십시오). UXTerm 스크린샷을 자세히 살펴보면 이것이 바로 UXTerm이 실제로 수행하는 작업임을 알 수 있습니다. 낮은 숫자 색상을 설정하세요.그리고 굵게 켜주세요, 귀하의 프롬프트에 따라.

다른 프로그램은비하드와이어 제어 시퀀스, 그것이 그들이 작동하는 이유입니다.

제어 시퀀스를 하드와이어하지 마십시오. tput setaf및를 사용하여 생성 tput setab하고 명령 대체를 사용하여 결과를 PS1쉘 변수에 넣습니다. 그러면 직접 배선한 터미널뿐만 아니라 다양한 유형의 터미널에서도 작동할 것입니다.

아이러니하게도 프롬프트에서 직접 배선을 수행한 사용자 또는 누구든지 터미널 유형의 작은 하위 집합에 작동하도록 선택했습니다. linux-16color터미널 유형 만 해당실제로 terminfo 데이터베이스에서 이러한 방식으로 색상 8~15를 설정해 보세요. 오늘날 세계 대부분의 터미널의 경우,굵은 글씨는 실제 굵은 글씨를 의미합니다., 색상이 아닌 글꼴 두께의 변경입니다. 이것을 색상 변경으로 사용하지 마십시오.

추가 읽기

관련 정보