Это мощный и легко настраиваемый системный монитор, в сети полно готовых конфигурационных файлов для этого замечательного пакета — conky, пишется на одном из сайтов в сети.. И все бы было хорошо, но пакет не стоял на месте и даже немного развивался. Как следствие появился «новый» синтаксис файлов, казалось бы беда, часть тем интернета теперь в топку, но нет, разработчик предусмотрительно выпустил конвертор для старых конфигов.

Счастье казалось бы, но нет, с выходом нового обновления куда-то исчезла функция — $pre_exec. Обидненько, досадненько, ну и это мы переживем.. да и многие темы живут с этой функцией.. я не стал вдаваться в подробности, почему так, а не иначе, а сразу приступил к решению сего недоразумения.

В самых лучших традициях, беглый поиск по русскоязычным сайтам не принес успеха, но благо в комментах, на github, некий пользователь с ником asl97 предложил чудное решение, чем собственно делюсь я. Копи/паст никто не отменял))) Да, она написана на коленках, но меня она устраивает и в таком виде.

Что нам нужно?
Перегнать старую конфигурацию в новую, коль этого еще не сделано.
В файл конфигурации темы дописать собственно функцию :)

При установке пакета, по крайней мере, при использовании команды:

sudo apt install conky

ставиться конвертор, находиться он по пути:

/usr/share/doc/conky-std/convert.lua

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

sudo chmod +x /usr/share/doc/conky-std/convert.lua

Ну, а теперь к бою — принцип работы таков:

convert.lua <путь к старому конфигу> <путь куда сохранить конвертированый>

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

conky.config = {

Должно получиться следующее:

require 'io'

function pre_exec(cmd)
    local handle = io.popen(cmd)
    local output = handle:read("*a")
    handle:close()
    return output
end

conky.config = {

Но к сожалению, этот способ не заставит работать переменную $pre_exec, ее прийдеться заменить следующей конструкцией:

]]..pre_exec("your_important_command")..[[

То есть, ранее в коде было:

${pre_exec команда}

А теперь ее нужно приобразить под новый вид:

]]..pre_exec("команда")..[[

На этом все, надеюсь вам была полезна эта информация 8)