Как правильно передать путь к файлу в функцию lua от Conky

Я работаю, чтобы упростить мой conky путем рефакторинга логики отображения в функции lua, но я не могу найти примеров того, как передавать пути к файлам, и мои попытки угадать приводят к ошибкам скрипта.

То, что я пытаюсь сделать, это отобразить на каждой панели следующие элементы о каждой файловой системе: root, home и 3 другие смонтированные файловые системы. Текущая рабочая логика для каждой строки похожа на эту строку для /home:

    ${goto 10}${voffset 4}${font StyleBats:size=8}4${font}   Home: ${goto 90}${color1}${fs_bar 6,100 /home}${color} ${goto 150}${alignr}${fs_free /home}

Каждая последующая строка отличается ТОЛЬКО меткой и 2 жестко закодированными путями (в разделах fs_bar и fs_free)

Итак, я снимаю для вызова функции, как это:

    ${lua conky_display_fs("Home", "/home")}

с функцией lua:

    function conky_display_fs (fname, fpath)
    local outstring = conky_parse("${goto 10}${voffset 4}${font StyleBats:size=8}4${font}   " .. fname .. ": ${goto 90}${color1}${fs_bar 6,100 " .. fpath .. "}${color} ${goto 150}${alignr}${fs_free " .. fpath .."}")

    print (outstring)
    return outstring

конец

но это последовательно терпит неудачу показывая следующее в журнале отладки conky

    conky: llua_do_call: function conky_display_fs("Home", execution failed: attempt to call a nil value

Итак, я предполагаю, что проблема в том, КАК я передаю строку пути, так как она показывает только первое значение в ошибке. Я думал о экранировании строк и т. Д., Но имена файлов, используемые в других частях конфигурации conky, не требуют их, таких как:

    lua_load = "~/conky-manager/MyConky/functions.lua",

и я не могу найти никаких примеров передачи путей к файлам или даже передачи нескольких строковых параметров, только простые примеры с использованием vars.

Это для существующей конфигурации conky, где успешный текст conky, показанный в первом блоке кода, работает отлично. Я уже пробовал несколько вариантов вызова, изменение кавычек, запятая / без запятой, другое имя параметра, чтобы избежать ключевых слов...

1 ответ

Решил это после примерно 20 разных экспериментов. Ответ заключается в том, что, несмотря на то, что в секции config требуются строки, заключенные в кавычки, в том числе lua config, они НЕ должны указываться в вызовах lua. Кроме того, я удалил паренсы.

Итак, правильный способ вызова функции lua со строками заключается в следующем:

  ${lua conky_display_fs Home, /home}  
Другие вопросы по тегам