パディングが0のConkyテキスト変数を作成しますか?

パディングが0のConkyテキスト変数を作成しますか?

Conkyの設定に奇妙な問題が発生しました。

ここに画像の説明を入力してください。

${cpu cpuX}私が取り除いたり修正したいのは、私のCPUの割合(使用量)が正しく満たされていないようです。状態が揺れないように、すべての値を垂直に揃えたいと思います。私のconkyファイルから抜粋したものは次のとおりです。

# ...
pad_percents 3
# ...
${cpubar cpu1 6,135}$alignr${...}${cpu cpu1}%

レイアウトが壊れないようにCPUパーセント値を適切に整列してパディングするにはどうすればよいですか?同等のprintf%3.0f値は次のとおりです。

$ "%3.0f" % (1,) 
'  1'
$ "%3.0f" % (13,)
' 13'
$ "%3.0f" % (100,)
'100'

私のCPU比率でConkyでこれをどのように達成できますか?

答え1

上記の@jasonwryanが提供したソリューション:

  1. Conkyが使用するLuaスクリプトを作成します。私は自分が作成したフォルダに自分のフォルダを作成しましたが、~/.config/conky/scriptsどこでも好きな場所に作成できます。

    $ mkdir -p ~/.config/conky/scripts/
    $ vim ~/.config/conky/scripts/conky_lua_scripts.lua
    
  2. 次の Lua 関数を使用してファイルを入力します。

    function conky_format( format, number )
        return string.format( format, conky_parse( number ) )
    end
    
  3. lua_loadコマンドを使用して、LuaスクリプトファイルをConky設定ファイルにインポートします。

    # ...
    lua_load ~/.config/conky/scripts/conky_lua_scripts.lua
    
    TEXT
    # ...
    
  4. 値を書式設定したいときはいつでも、前に定義したformat関数を呼び出します。名前をとして指定しましたが、変数を使用してアクセスconky_formatします。formatlua_parse

    # ...
    lua_load ~/.config/conky/scripts/conky_lua_scripts.lua
    
    TEXT
    # ...
    ${lua_parse format %3.0f ${cpu cpu1}}%
    

このクールなスクリプトを使用すると、任意の値とフォーマット文字列を使用してLuaフォーマットエンジンを呼び出すことができます。これで、出力が期待どおりに表示されます。

素晴らしい

このユーティリティに精通している場合は、printfこのユーティリティを使用して他の優れた書式設定方法を実行できます。

答え2

条件文を使用すると、Luaスクリプトなしでほぼ​​同じ効果を得ることができます。

${if_match ${cpu cpu1} < 10}${offset 10}${cpu cpu1}%

あなたのコードは次のとおりです。

${cpubar cpu1 6,135}$alignr${...}${if_match ${cpu cpu1} < 10}${offset 10}${endif}${cpu cpu1}%

注:オフセット値(上記の10)は、使用されているフォントに応じて調整する必要があります。

より完全な例では、より多くの条件を使用できます。

${cpubar cpu1 6,135}$alignr${...}${if_match ${cpu cpu1} < 10}${offset 20}${else}${if_match ${cpu cpu1} < 100}${offset 10}${endif}${cpu cpu1}%

関連情報