我正在尝试将旧的 conky 小部件转换为 1.10+ 的新语法,但我无法弄清楚为什么它无法运行。我已经完成了所有操作以确保它已正确转换,但它仍然无法运行我想要的小部件。这是代码:
conky.config = {
-- Conky settings
background = false,
update_interval = 1,
cpu_avg_samples = 2,
net_avg_samples = 2,
override_utf8_locale = true,
double_buffer = true,
no_buffers = true,
text_buffer_size = 2048,
--imlib_cache_size = 0,
temperature_unit = 'celsius',
-- With class override, gets images to display properly (black bg)
own_window_argb_visual = true,
own_window_argb_value = 0,
-- Window specifications
own_window_class = override,
own_window = true,
-- XFCE4 = desktop, sinon 'normal'
own_window_type = 'normal',
own_window_transparent = true,
-- XFCE4 - undecorate not working
own_window_hints = 'sticky,skip_taskbar,skip_pager,below',
border_inner_margin = 0,
border_outer_margin = 0,
minimum_width = 520,
minimum_height = 600,
maximum_width = 520,
alignment = 'top_right',
gap_x = 20,
gap_y = 112,
-- Graphics settings #
draw_shades = false,
draw_outline = false,
draw_borders = false,
draw_graph_borders = false,
-- useless
default_shade_color = 'red',
default_outline_color = 'green',
-- Text settings #
use_xft = true,
override_utf8_locale = true,
font = 'Play:normal:size=8',
xftalpha = 0.9,
uppercase = false,
-- TEXT color
default_color = '333333',
color0 = 'a992e6',
color1 = '323232',
lua_load = './rings-v2_gen.lua',
lua_draw_hook_pre = 'conky_main',
diskio_avg_samples = 2,
};
conky.text = [[
${voffset 12}${color1}${goto 106}${freq_g cpu0} Ghz${alignr 330}${hwmon 1 temp 1} °C
${voffset 16}${color1}${goto 106}${freq_g cpu0} Ghz${alignr 330}${acpitemp} °C
${voffset -3}${goto 120}${color1}CPU 1${alignr 330}${color1}${cpu cpu1}%
${voffset -3}${goto 120}${color1}CPU 2${alignr 330}${color1}${cpu cpu2}%
${voffset -3}${goto 120}${color1}CPU 3${alignr 330}${color1}${cpu cpu3}%
${voffset -3}${goto 120}${color1}CPU 4${alignr 330}${color1}${cpu cpu4}%
${voffset -3}${goto 120}${color1}CPU 5${alignr 330}${color1}${cpu cpu5}%
${voffset -3}${goto 120}${color1}CPU 6${alignr 330}${color1}${cpu cpu6}%
${goto 49}${voffset 12}${color1}${top name 1}${alignr 306}${top cpu 1}%
${goto 50}${color1}${top name 2}${alignr 306}${top cpu 2}%
${goto 50}${color1}${top name 3}${alignr 306}${top cpu 3}%
${font Michroma:size=10}${color0}${goto 80}${voffset 4}CPU
${voffset -130}${goto 378}${font}${color1}${top_io name 1}${alignr 30}${top_io io_write 1}%
${goto 378}${voffset -1}${color1}${top_io name 2}${alignr 30}${top_io io_write 2}%
${goto 378}${voffset -1}${color1}${top_io name 3}${alignr 30}${top_io io_write 3}%
${goto 370}${voffset 4}${color1}disk writes${alignr 30}${diskio_write}%
${goto 370}${color1}disk reads${alignr 30}${diskio_read}%
${font Michroma:size=10}${color0}${goto 418}${voffset 1}IO WAIT
${font Michroma:size=10}${color0}${goto 394}${voffset 59}MEMORY
${font}${goto 324}${voffset -4}${color1}${top_mem name 1}${alignr 40}${top_mem mem 1}%
${goto 324}${color1}${top_mem name 2}${alignr 40}${top_mem mem 2}%
${goto 324}${color1}${top_mem name 3}${alignr 40}${top_mem mem 3}%
${voffset 8}${goto 348}${color1}SWAP${alignr 40}${color1}${swap} / ${color1}${swapmax}
${voffset 1}${goto 348}${color1}RAM ${alignr 40}${color1}${mem} / ${color1}${memmax}
${goto 70}${voffset -81}/${color1}${alignr 310}${fs_used /} / ${fs_size /}
${goto 70}${voffset -1}/boot/efi${color1}${alignr 310}${fs_used /boot/efi} / ${fs_size /boot/efi}
${goto 70}${voffset -1}/mnt/nvme0n1p3${color1}${alignr 310}${fs_used /mnt/nvme0n1p3} / ${fs_size /mnt/nvme0n1p3}
${font Michroma:size=10}${color0}${goto 68}${voffset 8}FILESYSTEM
${font Michroma:size=10}${color0}${voffset 26}${goto 324}INTERNET INFO
${font}${color1}${alignr 54}${voffset -8}WiFi ${color1}${wireless_essid wlan0}
${goto 298}${voffset 2}Up${goto 370}${color1}${totalup wlan0} / ${color1}${upspeed wlan0}
${goto 298}${color1}Down${goto 370}${color1}${totaldown wlan0} / ${color1}${downspeed wlan0}
${goto 300}${voffset 4}Local IP${goto 370}${addr wlan0}
${goto 300}${voffset 0}Public IP${goto 370}${execi 3600 wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]\|.]//g'}
${voffset -24}
${font Michroma:size=10}${alignr 300}${voffset -50}${color0}${time %a} ${color0}${time %x}
${font Michroma:size=18}${alignr 318}${color1}${voffset -4}${time %H}:${time %M}
${font Michroma:bold:size=11}${color0}${voffset 90}${alignc}${execi 3600 awk -F '=' '/PRETTY_NAME/ { print $2 }' /etc/os-release | tr -d '"'}
]];
以及小部件调用的rings-v2_gen.lua文件
--[[
Ring Meters by londonali1010 (2009)
Modified by La-Manoue (2016)
Automation template by popi (2017)
This script draws percentage meters as rings. It is fully customisable; all options are described in the script.
IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement near the end of the script uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num > 5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num > 3; conversely if you update Conky every 0.5s, you should use update_num > 10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.
To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):
lua_load ~/conky/rings-v2_local.lua
lua_draw_hook_pre ring_stats
Changelog:
+ v2.1.1 -- addedd IO_WAIT ring
+ v2.1.0 -- templated for automation,
+ v2.0.0 -- Changed some values for ArchLinux
+ v1.2.2 -- Added color change for near-limits values / modified placement
+ v1.2.1 -- Fixed minor bug that caused script to crash if conky_parse() returns a nil value (20.10.2009)
+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)
+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)
+ v1.0 -- Original release (28.09.2009)
]]
normal="0xbb07d7"
warn="0xff7200"
crit="0xff000d"
-- seulement quand fond nécessaire
corner_r=35
bg_colour=0x3b3b3b
bg_alpha=0.2
-- blue | 0xbb07d7
-- red | 0xff1d2b
-- green | 0x1dff22
-- pink | 0xff1d9f
-- orange | 0xff8523
-- skyblue | 0x008cff
-- darkgray | 0x323232
settings_table_io = {
{
name='top_io io_perc 1',
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=370, y=98,
radius=55,
thickness=12,
start_angle=120,
end_angle=360
},
{
name='top_io io_perc 2',
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.6,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=370, y=98,
radius=42,
thickness=11,
start_angle=120,
end_angle=360
},
{
name='top_io io_perc 3',
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.4,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=370, y=98,
radius=30,
thickness=10,
start_angle=120,
end_angle=360
}
}
settings_table = {
{
name='hwmon',
arg='1 temp 1',
max=110,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=97,
thickness=4,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu1',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.7,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=88,
thickness=10,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu2',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.633333333333,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=77,
thickness=9.5,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu3',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.566666666667,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=66.5,
thickness=9.0,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu4',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.5,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=56.5,
thickness=8.5,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu5',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.433333333333,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=47.0,
thickness=8.0,
start_angle=0,
end_angle=240
},
{
name='cpu',
arg='cpu6',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.366666666667,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=200, y=120,
radius=38.0,
thickness=7.5,
start_angle=0,
end_angle=240
},
{
name='memperc',
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=340, y=234,
radius=60,
thickness=15,
start_angle=180,
end_angle=420
},
{
name='swapperc',
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.4,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=340, y=234,
radius=45,
thickness=12,
start_angle=180,
end_angle=420
},
{
name='fs_used_perc',
arg='/',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=220, y=280,
radius=40,
thickness=10,
start_angle=0,
end_angle=240
},
{
name='fs_used_perc',
arg='/boot/efi',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.6,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=220, y=280,
radius=29,
thickness=9,
start_angle=0,
end_angle=240
},
{
name='fs_used_perc',
arg='/mnt/nvme0n1p3',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.4,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=220, y=280,
radius=19,
thickness=8,
start_angle=0,
end_angle=240
},
{
name='downspeedf',
arg='wlan0',
max=125000,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=290, y=345,
radius=30,
thickness=12,
start_angle=180,
end_angle=420
},
{
name='upspeedf',
arg='wlan0',
max=125000,
bg_colour=0x3b3b3b,
bg_alpha=0.6,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=290, y=345,
radius=17,
thickness=11,
start_angle=180,
end_angle=420
},
{
name='time',
arg='%H',
max=24,
bg_colour=0x3b3b3b,
bg_alpha=0.4,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=230, y=406,
radius=10,
thickness=6,
start_angle=0,
end_angle=240
},
{
name='time',
arg='%M',
max=60,
bg_colour=0x3b3b3b,
bg_alpha=0.6,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=230, y=406,
radius=19,
thickness=9,
start_angle=0,
end_angle=240
},
{
name='time',
arg='%S',
max=60,
bg_colour=0x3b3b3b,
bg_alpha=0.8,
fg_colour=0xbb07d7,
fg_alpha=0.8,
x=230, y=406,
radius=31,
thickness=12,
start_angle=0,
end_angle=240
},
--{{ BATTERY }}
{
name='kernel', --just to avoid unknown viariable '$' in console
arg='',
max=100,
bg_colour=0x3b3b3b,
bg_alpha=0.6,
fg_colour=0xbb07d7,
fg_alpha=0.6,
x=274, y=464,
radius=5,
thickness=13,
start_angle=0,
end_angle=360
},
}
require 'cairo'
function rgb_to_r_g_b(colour,alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
function draw_ring(cr,t,pt)
local w,h=conky_window.width,conky_window.height
local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']
local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']
local angle_0=sa*(2*math.pi/360)-math.pi/2
local angle_f=ea*(2*math.pi/360)-math.pi/2
local t_arc=t*(angle_f-angle_0)
-- Draw background ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))
cairo_set_line_width(cr,ring_w)
cairo_stroke(cr)
-- Draw indicator ring
cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)
cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))
cairo_stroke(cr)
end
function conky_ring_stats()
-- 20170715 IO_WAIT
local function setup_rings_io(cr,pt)
local str=''
local value=0
local warn_value=50
local crit_value=70
str=string.format('${%s %s}',pt['name'],pt['arg'])
iowait=0
ioused=tonumber(conky_parse(str))
if ioused>0 then
iowait=100 - ioused
end
value=tonumber(iowait)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring(cr,pct,pt)
end
local function setup_rings(cr,pt)
local str=''
local value=0
str=string.format('${%s %s}',pt['name'],pt['arg'])
str=conky_parse(str)
value=tonumber(str)
if value == nil then value = 0 end
pct=value/pt['max']
draw_ring(cr,pct,pt)
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)
local cr=cairo_create(cs)
local updates=conky_parse('${updates}')
update_num=tonumber(updates)
if update_num>5 then
for i in pairs(settings_table) do
display_temp=temp_watch()
setup_rings(cr,settings_table[i])
end
-- IO_WAIT
for i in pairs(settings_table_io) do
setup_rings_io(cr,settings_table_io[i])
end
end
cairo_surface_destroy(cs)
cairo_destroy(cr)
end
-- Contrôle de l'espace disque
function disk_watch()
warn_disk=93
crit_disk=98
-- poser une boucle plus tard... pas simple
disk=tonumber(conky_parse("${fs_used_perc /}"))
if disk<warn_disk then
settings_table[10]['fg_colour']=normal
elseif disk<crit_disk then
settings_table[10]['fg_colour']=warn
else
settings_table[10]['fg_colour']=crit
end
disk=tonumber(conky_parse("${fs_used_perc /boot/efi}"))
if disk<warn_disk then
settings_table[11]['fg_colour']=normal
elseif disk<crit_disk then
settings_table[11]['fg_colour']=warn
else
settings_table[11]['fg_colour']=crit
end
disk=tonumber(conky_parse("${fs_used_perc /mnt/nvme0n1p3}"))
if disk<warn_disk then
settings_table[12]['fg_colour']=normal
elseif disk<crit_disk then
settings_table[12]['fg_colour']=warn
else
settings_table[12]['fg_colour']=crit
end
end
-- Contrôle de la température
function temp_watch()
warn_value=70
crit_value=80
temperature=tonumber(conky_parse("${hwmon 1 temp 1}"))
if temperature<warn_value then
settings_table[1]['fg_colour']=normal
elseif temperature<crit_value then
settings_table[1]['fg_colour']=warn
else
settings_table[1]['fg_colour']=crit
end
end
-- Battery color control
function battery_watch()
warn_value=30
crit_value=10
--{{ BATTERY_WATCH }}
if battery>warn_value then
settings_table[index]['fg_colour']=normal
elseif battery>crit_value then
settings_table[index]['fg_colour']=warn
else
settings_table[index]['fg_colour']=crit
end
end
-- Contrôle de l'interface active
-- choice to not probe network interface once conky is running.
-- just call again create_conky.py to update if gateway interface has changed
--function iface_watch()
--
-- iface=conky_parse("${if_existing /proc/net/route enp1s0f2}enp1s0f2${else}wlan0${endif}")
--
-- settings_table[11]['arg']=iface
-- settings_table[12]['arg']=iface
--end
function conky_draw_bg()
if conky_window==nil then return end
local w=conky_window.width
local h=conky_window.height
local cs=cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, w, h)
cr=cairo_create(cs)
cairo_move_to(cr,corner_r,0)
cairo_line_to(cr,w-corner_r,0)
cairo_curve_to(cr,w,0,w,0,w,corner_r)
cairo_line_to(cr,w,h-corner_r)
cairo_curve_to(cr,w,h,w,h,w-corner_r,h)
cairo_line_to(cr,corner_r,h)
cairo_curve_to(cr,0,h,0,h,0,h-corner_r)
cairo_line_to(cr,0,corner_r)
cairo_curve_to(cr,0,0,0,0,corner_r,0)
cairo_close_path(cr)
cairo_set_source_rgba(cr,rgb_to_r_g_b(bg_colour,bg_alpha))
cairo_fill(cr)
end
function conky_main()
temp_watch()
disk_watch()
--iface_watch()
-- if a battery is found
--{{ BATTERY_ACTIVATE }}
conky_ring_stats()
-- quand fond nécessaire
-- conky_draw_bg()
end
我需要编辑什么才能使其正常运行?