====== Conky ======
Conky is the lightweight desktop widget system: a good fit for LXQt and this
hardware. Configs are Lua since Conky 1.10.
===== Install & run =====
sudo apt install conky conky-all
mkdir -p ~/.config/conky
cp /etc/conky/conky.conf ~/.config/conky/ # starting point
conky # run it (it daemonizes)
conky -C > ~/.config/conky/conky.conf # or dump default config
Autostart: ''lxqt-config-session'' → Autostart → add ''conky''. Or a ''.desktop''
file in ''~/.config/autostart/''.
===== Config structure (Lua syntax) =====
conky.config = {
update_interval = 1,
double_buffer = true,
own_window = true,
own_window_type = 'desktop',
alignment = 'top_right',
gap_x = 20, gap_y = 40,
default_color = 'ebdbb2',
font = 'DejaVu Sans Mono:size=10',
}
conky.text = [[
${alignr}${time %H:%M}
CPU: ${cpu}% ${cpubar}
RAM: ${memperc}% ${membar}
Temp: ${acpitemp}°C
Fan: ${execi 2 cat /sys/devices/platform/applesmc.768/fan1_input} rpm
]]
Useful objects: ''${cpu cpu1}'', ''${mem}'', ''${memperc}'', ''${swapperc}'',
''${acpitemp}'', ''${battery}'', ''${wireless_link_qual_perc wlp3s0}'',
''${downspeed}''/''${upspeed}'', ''${fs_used /}'', ''${top name 1}'',
''${exec cmd}'', ''${execi N cmd}'' (every N sec), ''${if_running mbpfan}'',
''${time %A %F}'', ''${alignr}'', ''${color red}'', ''${goto 100}'', ''${hr}''.
MacBook-specific goodies:
conky.text = [[
CPU ${cpu}% ${hwmon coretemp temp 1}°C
Fan ${execi 2 cat /sys/devices/platform/applesmc.768/fan1_input} rpm
Turbo ${execi 5 cat /sys/devices/system/cpu/intel_pstate/no_turbo}
]]
===== Lua scripts (drawing, custom logic) =====
Load a script + hook it:
conky.config = {
lua_load = '~/.config/conky/rings.lua',
lua_draw_hook_pre = 'main', -- calls conky_main() in rings.lua
-- hooks: lua_draw_hook_pre/post, lua_startup_hook, lua_shutdown_hook,
-- lua_mouse_hook
}
The Lua function must be named ''conky_''. Drawing uses Cairo:
require 'cairo'
function conky_main()
local surface = conky_surface() -- nil in text mode
if not surface then return end
local cr = cairo_create(surface)
-- read a conky variable from Lua:
local cpu = tonumber(conky_parse('${cpu}')) or 0
cairo_set_source_rgba(cr, 0.98, 0.74, 0.18, 0.8) -- gruvbox yellow
cairo_arc(cr, 60, 60, 40, -math.pi/2,
-math.pi/2 + cpu/100*2*math.pi)
cairo_set_line_width(cr, 8)
cairo_stroke(cr)
cairo_destroy(cr)
end
Gotchas:
* ''conky_surface()'' is only valid inside the draw call: never cache it.
* Guard early draws: ''${cpu}''-derived values are 0/NaN until the first update
interval; skip when ''conky_parse('${updates}')'' < 3 or you'll crash.
* Check Lua support: ''conky -v | grep -i lua''. The ''conky-all'' package has it.
* Plain-text Lua output (no cairo): ''${lua conky_myfunc arg}'' calls
''conky_myfunc(arg)'' and prints its return value.
===== Standalone Lua =====
sudo apt install lua5.4 lua5.4-doc luarocks
lua5.4 -e 'print("hi")'
lua5.4 script.lua
luarocks install luasocket # packages go to ~/.luarocks
===== Performance note =====
Conky itself is light, but ''execi'' every 1s on a 2-core adds up: prefer
built-in objects and ''execi 5''+ for shell-outs.
===== See Also =====
* [[terminal:scripting:start|Scripting Index]]
* [[terminal:tools:start|CLI Tools]]
* [[terminal:start|Return to terminal]]
* [[start|Return to wiki home]]