web-dev-qa-db-ja.com

可変長値を処理するようにConkyを変更する

私は現在、DWMとConkyを試して、コーディングなどに使用する最小限のデスクトップを作成しています。何かいいことが起こっていますが、現在問題が発生しています。現在、私のConky TEXTセクションは中央揃えで、見栄えが良いですが、CPU使用率に関する情報も返しています。 CPU使用率がたとえば9〜10%の間でちらつく場合、テキストの全体的なサイズは異なり、中央揃えであるため、少し移動します。わかりやすくするために色を少し削除しました。これが問題の行の単純なバージョンです...

${alignc}CPU: ${cpu}%

もちろん、2つの違い

CPU 9%

CPU 10%

問題の原因は何ですか。 9に2つのゼロ、次に10に1つのゼロ、次に100にゼロなしを左パディングするにはどうすればよいですか?ドキュメントで漠然と関連していることがわかるのは、小数点以下の桁数のパディングを処理することだけです。これは、私が必要としていることではありません。

8
JBirch

解決策(現在はこれ以上良いものは見つかりませんが、機能します)には、カスタムLua関数の使用が含まれます。次の方法を実行する必要があります。

  1. Lua関数のファイルを作成します。たとえば~/.conky_lua_scripts.lua with:

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

    これにより、数値がスペースで埋められます(imoより良い)。ゼロが必要な場合は、「%3i」を「%03i」に置き換えてください。

  2. あなたの.conkyrcTEXTセクションの前に追加:

    lua_load ~/.conky_lua_scripts.lua
    
  3. 最後に、TEXTセクションに次のような埋め込み値型を出力します。

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

Lua関数をできるだけシンプルにしようとしましたが、必要に応じてより一般的な関数を作成できるため、任意の数/値を管理したり、その配置を変更したりすることもできます。

6
cYrus

Conkyにはついにそれが組み込まれました。これらのオプションはトリックを行います:

use_spacer left
pad_percents 2
5
sgtpep

パーセンテージを表示しようとしたときに、1%、5%、0%などではなく04%05%などと同様の懸念がありました(「ジャンプする」というテキストを避けるため)。 $if_matchを使用して単純なif構造をコーディングすることができました

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

^^^これは、${cpu cpu0}が10未満の場合、10の列に0を出力します。次に、1の列の数字を出力します。次に、%記号を出力します。

$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}

ここでは、コメント付きのコンポーネント、複数行に分解します

${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
1
petey

私は通常、テキスト(CPU)を左に、値を右に揃え、正確な位置を指定します。このようにして、値はCPUと値の間の空きスペースに「拡張」されます(たとえば、9から10)。

0
Patkos Csaba