Как правильно передать путь к файлу в функцию lua от Conky - PullRequest
0 голосов
/ 20 января 2019

Я работаю, чтобы упростить мой 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 Ответ

0 голосов
/ 21 января 2019

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

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

  ${lua conky_display_fs Home, /home}  
...