Como posso criar minha própria barra de progresso personalizada em Conky?

1

Comecei a usar o Conky há alguns dias e estou disposto a criar minha própria configuração. Eu adicionei algumas cores, arte legal ASCII e aprendi o básico.

No entanto, eu não gosto das barras de progresso padrão que vêm com o Conky, e gostaria de criar algo como uma string de 50 '#' sinais ou 'retângulos' (219º caractere na tabela ASCII), sendo o primeiro 20 verdes, os seguintes 20 amarelos e os últimos 10 vermelhos.

Eu gostaria de implementá-lo como fs_bar , sendo verde quando tenho muito espaço livre, amarelo quando está meio cheio e vermelho quando eu deveria liberar alguns arquivos, mas mostrando as três cores nos dois últimos casos. Estou anexando uma imagem com um resultado bem parecido.

Estou executando AwesomeWM no Arch Linux e minha versão Conky é 1.10.5.

    
por xvlaze 26.11.2016 / 19:35

1 resposta

2

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 # .

    
por 26.11.2016 / 21:08