関数の出力に基づいて画像を動的にロードします。

関数の出力に基づいて画像を動的にロードします。

.pngconkyにバッテリーアイコンを表示するために1つをロードしようとしています。これまでevalを使用してネストした関数を呼び出しようとしましたが、解決策が見つからなかったようです。

これはうまくいかないconky.textです。

conky.text = [[
  ${image ${lua battery_icon $battery_status $battery_icon}}
]]

私のbattery_icon機能は次のとおりです

function conky_battery_icon(battery_status, battery_percent)
  if (battery_status == "charging")
  then
    icon = "charging-battery.png";
  else 
    ...
  end

  return("/path/to/icons/" .. icon);
end

関数が機能していることを確認し、私のエントリに次の行を追加することで確認できますconky.text

${lua battery_icon $battery_status $battery_percent}

返されたパスを使用してbattery_iconconkyからファイルをロードする方法はimage

関連質問:動的 conky 変数パラメータ

答え1

パスのみを返すのではなく、完全に形成されたconkyステートメントを返すことでアイコンを表示できます。たとえば、次のようなイメージステートメントを返すLua関数があるとします。

function conky_myimg()
    local path = "/home/David/System/Icons/StuffedTux.png";
    local s = "${image "..path.."}";
    return s;
end

conky.text...次の行で関数を呼び出します...

${lua_parse myimg}

...その後、conkyはアイコンを表示します。

conkyが表示するアイコン

答え2

まだテストしていませんが、luaあなたに追加してみるとconky.text読むことができます。

conky.text = [[
  ${image ${lua battery_icon $battery_status $battery_icon}}
]]

関連情報