Modifique o Conky para manipular valores de comprimento variável

6

Atualmente, estou experimentando o DWM e o Conky para criar uma área de trabalho com aparência mínima para codificação e coisas do tipo. Eu tenho algo legal acontecendo, mas há algo que estou tendo um problema no momento. No momento, minha seção Conky TEXT está alinhada ao centro, o que parece legal, mas também está retornando informações sobre o uso da CPU. Se o uso da CPU estiver piscando entre, digamos, 9 e 10%, o tamanho geral do texto será diferente e, como é alinhado ao centro, ele se moveu um pouco. Cores removidas por um segundo para maior clareza, aqui está uma versão simples da linha em questão ...

${alignc}CPU: ${cpu}%

A diferença, claro, entre os dois

CPU 9%

CPU 10%

é o que está causando o problema. Como eu faria o preenchimento esquerdo do 9 com dois zeros, depois 10 com um zero e depois 100 sem zeros? A única coisa que posso ver vagamente relacionada na documentação tem que lidar com preenchimento de casas decimais, o que não é o que eu preciso.

    
por JBirch 20.08.2010 / 07:24

4 respostas

5

Uma solução (não é possível encontrar nada melhor agora, mas funciona) envolve o uso de uma função Lua personalizada. Veja como você deve fazer isso:

  1. Crie um arquivo para a função Lua, diga ~/.conky_lua_scripts.lua com:

    function conky_pad( number )
        return string.format( '%3i' , conky_parse( number ) )
    end
    

    Isto irá preencher o número com espaços (imo mais agradáveis), se você quiser zeros apenas substitua '% 3i' por '% 03i'.

  2. No seu .conkyrc add antes da seção TEXT :

    lua_load ~/.conky_lua_scripts.lua
    
  3. Finalmente, imprima um tipo de valor preenchido na seção TEXT , como:

    ${alignc}CPU: ${lua_parse pad ${cpu}}%
    

Eu tentei manter a função Lua o mais simples possível, mas você pode fazer uma mais genérica, se quiser, para que você possa gerenciar qualquer número / valor ou até mesmo alterar seu alinhamento.

    
por 20.08.2010 / 10:39
5

Conky finalmente tem embutido. Essas opções fazem o truque:

use_spacer left
pad_percents 2
    
por 30.04.2013 / 07:23
1

Eu tive uma preocupação semelhante ao tentar exibir porcentagens como, digamos 04% 05% etc, em vez de 1%, 5%, 0%, etc (para evitar o texto "pulando"). Consegui codificar uma estrutura if simples usando $if_match

${if_match ${cpu cpu0}<10}0${endif}${cpu cpu0}%

^^^ O que isto faz é imprimir um 0 na coluna de dezenas se ${cpu cpu0} for menor que 10. Então ele imprime os dígitos da coluna. Em seguida, imprime o símbolo%.

$if_match will print, run, or execute whatever is between itself and the ${endif}

${if_match [COMPARISON]}
...commands                  <<< all i do is print a 0.  heh
${endif}

Aqui, vou dividi-lo em componentes com comentários, várias linhas

${if_match ${cpu cpu0}<10}  ### is the cpu load less than 10% ?
0                           ### if so, print a 0 !!!
${endif}                    ### thanks bye i had a really good time
%                           ### output formatting.  so it says 08% 
                              # instead of 08
    
por 31.08.2015 / 06:34
0

Costumo alinhar o texto (CPU) à esquerda e os valores à direita e especificar sua posição exata. Dessa forma, os valores estão "estendendo" (de 9 a 10, por exemplo) para o espaço vazio entre a CPU e o valor.

    
por 20.08.2010 / 09:12