Você pode fazer algo simples como este, que usa execpi para executar um script de shell a cada 30 segundos que analisa a saída de df / e o converte em uma longa cadeia de comandos conky color e \# caracteres (já que # é usado para comentários):
${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}
Meu df --output=pcent gera 2 linhas; o segundo é uma porcentagem usada, por exemplo, 69% . Eu tentei isso em 1.9 conky.
Se o seu arquivo ~/.conkyrc foi convertido para a versão de formato 1.10, ele conterá uma linha
conky.text = [[
Certifique-se de adicionar o script acima antes do fechamento final ]] .
Além disso, em 1,10 cores dadas como números (por exemplo, #ff0000 acima) não começam mais com # , então você deve usar ff0000 e assim por diante no script.
Para simplificar, coloque o seguinte script em um arquivo separado em algum lugar em seu PATH, diga ~/mydf , torne-o executável ( chmod +x ~/mydf ) e coloque esse nome de arquivo em ~/.conkyrc , por exemplo, ${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"," "
}'
Se você quiser colocar todo o script no arquivo ~/.conkyrc , será necessário aumentar o tamanho padrão do buffer ou o comando será truncado para 256 caracteres. Isso leva a erros como
sh: -c: line 0: unexpected EOF while looking for matching '''
Para fazer isso, no 1.10 adicione uma linha dentro da parte conky.config={...} , certificando-se de separar as configurações com uma vírgula ( , ):
text_buffer_size = 400,
No conky 1.9 adicione uma linha antes da seção TEXT :
text_buffer_size 400
Para parar o redimensionamento da janela à medida que o número de caracteres impressos aumenta, um% final printf "%50s"," " adiciona uma segunda linha de espaços do tamanho máximo. Como alternativa, adicione uma configuração para o tamanho mínimo da janela em pixels, por exemplo, minimum_size 500 (ou minimum_size=500, para 1,10), em que o valor a ser usado depende da largura da fonte do caractere # .