Доброго времени суток, Хабравчане. Сегодня я расскажу, как использовать lua скрипты в conky. В статье мы разберем: добавление скрипта в conky, разберем его каркас и базовый синтаксис lua.
Для того чтобы добавить Lua скрипт conky, существуют связанные
с ней объекты. В первую очередь это lua_load и lua_draw_hook_pre
Указываем их до TEXT в .conkyrc.
lua_load используется для указания расположения lua скрипта. Например:
lua_draw_hook_pre говорит conky, какие функции надо запустить.Например:
Он может выглядеть так:
Это однострочный комментарий в Lua. Он всегда начинается с --. Многострочные же открываются с --[[, а закрываются ]]. Как здесь:
Для выведения графики используется библиотека cairo, котору мы сейчас и добавим. Чтобы это сделать, нужно написать require и название библиотеки в кавычках.
Это объявление нашей главной функции, которую мы и добавили в
в lua_draw_hook_pre. Закрытие функции осуществляется ключевым словом end
Эти строчки нужны ТОЛЬКО в главной функции. Они создают «холст», на который lua и будет выводить текст и графику.
Это нужно, если мы будем выводить информацию, которая часто меняется. Сначала мы создаем локальную переменную с помощью local, в которую помещаем объект conky, отвечающий за обновления.
Чтобы обратиться к объекту, используют conky_parse(). Например так:
Но помните, все числа, которые вернули объекты, воспринимаются в lua как строки. Поэтому мы перевели их в числа с помощью tonumber().
Наконец, мы может что-нибудь выполнить. Более подробно вывод мы рассмотрим в следующей статье, а пока просто выведем сообщение в терминал. По традиции это будет Hello World!
Всегда запускайте conky в терминале для тестирования lua скрипта. Функиця print в этом так же будет полезна.
Сначала мы закрыли if, который был нужен для настройки частоты обновления. И провели «чистку».
У Lua есть одна проблема, со временем она начинает есть память. Этот код так же помагает избежать этого. Ну и последней строчкой мы закрыли главную функцию(conky_main).
Вот и всё. Мы узнали как добавить lua скрипт в conky и разобрали его «скелет». В следующих статьях мы начнем разбирать вывод информации на экран с помощью lua. Удачи!
Добавление скрипта в conky
Для того чтобы добавить Lua скрипт conky, существуют связанные
с ней объекты. В первую очередь это lua_load и lua_draw_hook_pre
Указываем их до TEXT в .conkyrc.
lua_load используется для указания расположения lua скрипта. Например:
lua_load /home/username/script.lua
lua_draw_hook_pre говорит conky, какие функции надо запустить.Например:
lua_draw_hook_pre conky_main
Разбираем скелет
Он может выглядеть так:
-- Добавляем cairo
require 'cairo'
function conky_main()
if conky_window == nil then return end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
cr = cairo_create(cs)
local updates=tonumber(conky_parse('${updates}'))
if updates>5 then
print ("hello world")
end -- закрываем if updates>5
cairo_destroy(cr)
cairo_surface_destroy(cs)
cr=nil
end
Комментарии
-- Комментарий в lua
Это однострочный комментарий в Lua. Он всегда начинается с --. Многострочные же открываются с --[[, а закрываются ]]. Как здесь:
--[[ Это
многострочный
комментарий ]]
Добавление библиотек
Для выведения графики используется библиотека cairo, котору мы сейчас и добавим. Чтобы это сделать, нужно написать require и название библиотеки в кавычках.
require 'cairo'
Объявляем главную функцию
function conky_ main()
Это объявление нашей главной функции, которую мы и добавили в
в lua_draw_hook_pre. Закрытие функции осуществляется ключевым словом end
Создаем «холст»
if conky_window == nil then return end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
cr = cairo_create(cs)
Эти строчки нужны ТОЛЬКО в главной функции. Они создают «холст», на который lua и будет выводить текст и графику.
Частота обновления
local updates=tonumber(conky_parse('${updates}'))
if updates>5 then
Это нужно, если мы будем выводить информацию, которая часто меняется. Сначала мы создаем локальную переменную с помощью local, в которую помещаем объект conky, отвечающий за обновления.
Чтобы обратиться к объекту, используют conky_parse(). Например так:
conky_parse("${cpu}")
Но помните, все числа, которые вернули объекты, воспринимаются в lua как строки. Поэтому мы перевели их в числа с помощью tonumber().
Тело скрипта
Наконец, мы может что-нибудь выполнить. Более подробно вывод мы рассмотрим в следующей статье, а пока просто выведем сообщение в терминал. По традиции это будет Hello World!
print ("Hello World!")
Всегда запускайте conky в терминале для тестирования lua скрипта. Функиця print в этом так же будет полезна.
Конец «скелета»
end -- закрываем if updates>5
cairo_destroy(cr)
cairo_surface_destroy(cs)
cr=nil
end -- закрываем главную функцию
Сначала мы закрыли if, который был нужен для настройки частоты обновления. И провели «чистку».
У Lua есть одна проблема, со временем она начинает есть память. Этот код так же помагает избежать этого. Ну и последней строчкой мы закрыли главную функцию(conky_main).
Конец
Вот и всё. Мы узнали как добавить lua скрипт в conky и разобрали его «скелет». В следующих статьях мы начнем разбирать вывод информации на экран с помощью lua. Удачи!