Как правильно передать путь к файлу в функцию 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}