i3Blocks 스크립트(음영)

i3Blocks 스크립트(음영)

대역폭 입력/출력을 인쇄하는 i3Blocks 스크립트(i3 WM 환경의 유틸리티 블록)를 수정하고 싶습니다. 특히 이 지시문의 출력 색상을 변경하고 싶습니다.

echo -n " $INLABEL"

색상으로 #9fbc00무엇을 합니까 ? 감사해요

답변1

짧은 대답은 할 수 없다는 것입니다. 진정한 24비트 색상(RGB)은 허용되는 표준의 일부가 아니며 터미널이 이를 지원하는지 여부에 따라 문제가 되기 때문입니다. 터미널 팔레트에서 미리 정의된 색상을 사용해야 합니다.ANSI 3/4비트 컬러

즉, 일부 터미널은 실제 24비트 색상을 지원하며 대부분은 \033[48;2;r;g;bm색상을 배경으로 4설정하고 색상을 전경으로 정의하기 48위해 변경할 수 있는 형식을 사용합니다. 3(추가 정보)

문자 rg와 b는 10진수로 8자리 숫자를 나타내므로 printf "\033[38;2;159;188;0mhellohello()는 원하는 색상으로 인쇄되지만 #9fbc00명령을 실행하면 재설정되지 않으므로 터미널에 다시 이전으로 돌아가도록 지시해야 합니다. 원래 색상. 이렇게 하려면 다른 이스케이프 시퀀스를 사용해야 합니다. \033[0m

이제 아시다시피 오류 없는 인쇄 Hello world!방법 #9fbc00

printf "\033[38;2;159;188;0mHello world!\033[0m\n".

ps: echo는 이스케이프 코드를 좋아하지 않습니다. 형식을 지정하려면 printf를 사용하세요.

답변2

그림i3blocks 매뉴얼 페이지상태:

The standard output of the command line is used to update the block content.  
Each non-empty line of the output will overwrite the corresponding property:

1. full_text

2. short_text

3. color

For example, this script sets the full_text in blue but no short_text:

    echo "Here's my label"
    echo
    echo \#0000FF

따라서 스크립트가 세 줄을 인쇄하도록 하세요. 마지막 줄에는 색상 코드가 포함되어야 합니다.

물론 모든 스크립트 출력의 색상이 변경됩니다.

관련 정보