나는 며칠 전부터 Conky를 사용하기 시작했고 나만의 구성을 만들려고 합니다. 색상과 멋진 ASCII 아트를 추가하고 기본 사항을 배웠습니다.
그러나 Conky와 함께 제공되는 기본 진행률 표시줄이 마음에 들지 않습니다. 50개의 "#" 기호 또는 "직사각형"(ASCII 테이블의 219번째 문자)과 같은 문자열을 만들고 싶습니다. 즉 처음 20개는 녹색이고 다음은 녹색입니다. 노란색은 20개, 빨간색은 마지막 10개입니다.
fs_bar
여유 공간이 충분하면 녹색, 절반이 차면 노란색, 일부 파일을 비워야 할 때는 빨간색 으로 구현하고 싶지만 마지막 두 경우에는 세 가지 색상이 표시됩니다. 나는영상결과는 매우 유사합니다.
저는 Arch Linux에서 AwesomeWM을 실행하고 있으며 Conky 버전은 1.10.5입니다.
답변1
execpi
30초마다 쉘 스크립트를 실행하고, 출력을 구문 분석 하고, 이를 주석에 사용되는 conky 명령 및 문자 df /
의 긴 목록으로 변환하는 다음 과 같이 간단한 작업을 수행할 수 있습니다 .color
\#
#
${execpi 30 df --output=pcent / | awk 'NR==2 {
n = ($1+0)/2; yellow = 20; red = 40;
if(n>=red) { r = "${color #ff0000}"; for(;n>=red;n--) r = r "\\#" }
if(n>=yellow){ y = "${color #ffff00}"; for(;n>=yellow;n--)y = y "\\#" }
g = "${color #00ff00}"; for(;n>0;n--) g = g "\\#";
print g y r
printf "%50s"," "
}' }
${color}
내 df --output=pcent
출력은 2줄입니다. 두 번째는 사용된 백분율입니다 69%
. 나는 이것을 conky 1.9에서 시도했습니다.
~/.conkyrc
파일이 버전 1.10 형식으로 변환된 경우 다음 줄이 포함됩니다.
conky.text = [[
최종 종료 전에 위의 스크립트를 반드시 추가하시기 바랍니다 ]]
. 또한 1.10에서는 ( #ff0000
위와 같이) 숫자로 지정된 색상이 더 이상 로 시작하지 않으므로 스크립트에서 등을 사용해야 #
합니다 . ff0000
단순화하려면 다음 스크립트를 PATH의 별도 파일에 넣습니다. 예를 들어 ~/mydf
실행 가능하게 만든 chmod +x ~/mydf
다음( ) 해당 파일 이름을 ~/.conkyrc
.${execpi 30 ~/mydf /}
#!/bin/bash
df --output=pcent "${1?}" | awk 'NR==2{
n = ($1+0)/2; yellow = 20; red = 40;
if(n>=red) { r = "${color ff0000}"; for(;n>=red;n--) r = r "\\#" }
if(n>=yellow){ y = "${color ffff00}"; for(;n>=yellow;n--)y = y "\\#" }
g = "${color 00ff00}"; for(;n>0;n--) g = g "\\#";
print g y r
printf "%50s"," "
}'
전체 스크립트를 파일에 넣으려면 ~/.conkyrc
기본 버퍼 크기를 늘려야 합니다. 그렇지 않으면 명령이 256자로 잘립니다. 이로 인해 다음과 같은 오류가 발생합니다.
sh: -c: line 0: unexpected EOF while looking for matching `''
이렇게 하려면 1.10의 해당 섹션 내부에 줄을 추가하고 설정을 conky.config={...}
쉼표( )로 구분하세요.,
text_buffer_size = 400,
conky 1.9에서는 이 섹션 앞에 다음 줄을 추가합니다 TEXT
.
text_buffer_size 400
인쇄되는 문자 수가 증가함에 따라 창 크기가 조정되는 것을 방지하기 위해 printf "%50s"," "
최대 길이 공백의 두 번째 줄이 끝에 추가됩니다. 또는 minimum_size 500
(또는 1.10) 과 같이 창의 최소 크기(픽셀 단위)에 대한 구성 설정을 추가합니다. minimum_size=500,
여기서 사용할 값은 #
문자의 글꼴 너비에 따라 다릅니다.