My conky
road trip was born wanting more insight into my AMD CPU (5600x) & GPU (6800XT)… more than what I could find by using KSysGuard
… and not wanting to have multiple terminals of various watch
commands or radeontop
.
My focus on acquiring the AMD device data ended up being in direct calls to files at /sys/class/hwmon/hwmon3/
for CPU and GPU info at /sys/class/hwmon/hwmon5
and /sys/class/hwmon/hwmon5/device
… proving to myself a GNU/Linux baseline fundamental of “everything is a file”.
My two core sources of inspiration for what ultimately went into my conky are:
- A user submitted design on the conky wiki set a layout/section baseline
-
@Fabby 's conky provided a better config (windowed, Manjaro colour pallette, etc), inspired some network/fs redesign, and adding the PID to the process list
Code
conky.config ={
console_bar_fill = '»',
console_bar_unfill = ' ',
alignment = 'top_left',
background = false,
border_width = 2,
cpu_avg_samples = 2,
-- define Manjaro colours:
default_color = '#1abc9c', -- Same HTML as current terminal
color1 = '#709080', -- Kakhi
color2 = '#dca3a3', -- Salmon
color3 = '#72d5a3', -- Light Green
color4 = '#f0dfaf', -- Yellow
color5 = '#7eb2e6', -- Metal blue
color6 = '#a45ec1', -- Light aubergine
font = 'DevaVu Sans Bold:size=10',
default_outline_color = '#1abc9c', -- Same HTML as current terminal
default_shade_color = '#1abc9c', -- Same HTML as current terminal
double_buffer = true,
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
extra_newline = false,
format_human_readable=true,
gap_x = -300,
gap_y = 0,
minimum_height = 200,
minimum_width = 200,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_ncurses = false,
out_to_stderr = false,
out_to_x = true,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'normal',
own_window_transparent = false,
-- set transparency:
own_window_argb_visual = true,
own_window_argb_value = 175,
show_graph_range = false,
show_graph_scale = false,
stippled_borders = 0,
update_interval = 1.0,
uppercase = false,
use_spacer = 'none',
use_xft = true,
};
conky.text = [[
${color6}${font :size=20}${alignc}${time %H:%M:%S}${font}
${color6}${font :size=16}${alignc}${time %A %d %B %Y}${font}
${color6}${hr}
${color5}SYSTEM:${color}${alignr}$nodename
${color5}UPTIME:${color}${alignr}$uptime_short
${color5}KERNEL:${color}${alignr}$kernel
${color6}${font :size=12}CPU & CORES ${hr}$font
${color5}CPU:${color}${alignr}AMD Ryzen 5 5600X @ 3.70GHz
${color2} 01 - 04:${color4}${goto 100}${cpu cpu1}% ${goto 150}${cpu cpu2 }% ${goto 200}${cpu cpu3 }% ${goto 250}${cpu cpu4 }%
${color2} 05 - 08:${color4}${goto 100}${cpu cpu5}% ${goto 150}${cpu cpu6 }% ${goto 200}${cpu cpu7 }% ${goto 250}${cpu cpu8 }%
${color2} 09 - 12:${color4}${goto 100}${cpu cpu9}% ${goto 150}${cpu cpu10}% ${goto 200}${cpu cpu11}% ${goto 250}${cpu cpu12}%
${color5}CPU Load: ${color4}$cpu% ${color1}$cpubar
${voffset -5}${color1}${cpugraph cpu0 -l -t}${voffset -5}
${color5}CPU Freq: ${color4}$freq_g ghz ${alignr}${color5}CPU Temp: ${color4}${execi 1 cat /sys/class/hwmon/hwmon3/temp2_input | awk -v OFMT="%3.2f" '{print $1/1000 " C"}'}
${color6}${font :size=12}MEMORY ${hr}$font
${color5}RAM: ${color4}$mem ${color}/ $memmax ${color4}($memperc%) ${color1}$membar
${color5}SWAP: ${color4}$swap ${color}/ $swapmax ${color4}($swapperc%) ${color1}$swapbar
${color6}${font :size=12}GPU ${hr}$font
${color5}GPU:${color}${alignr}AMD Radeon RX 6800XT (XFX)
${color5}GPU Load: ${color4}${execi 1 cat /sys/class/hwmon/hwmon5/device/gpu_busy_percent | awk -v OFMT="%3.2f" '{print $1 "%"}'}${alignr}${color5}GPU Fan: ${color4}${execi 1 cat /sys/class/hwmon/hwmon5/fan1_input | awk '{print $1 " RPM"}'} ${color}/ 3300 RPM
${color5}GPU Temp: ${color4}${execi 1 cat /sys/class/hwmon/hwmon5/temp1_input | awk -v OFMT="%3.2f" '{print $1/1000 " C"}'}${alignr}${color5}GPU Power: ${color4}${execi 1 cat /sys/class/hwmon/hwmon5/power1_average | awk -v OFMT="%3.2f" '{print $1/1000000 " W"}'} ${color}/ 255 W
${color5}GPU Shader Clk: $alignr${color4}${execi 1 cat /sys/class/hwmon/hwmon5/device/pp_dpm_sclk | grep '*$' | awk '{print $2}'} ${color}/ 2575Mhz
${color5}GPU Memory Clk: $alignr${color4}${execi 1 cat /sys/class/hwmon/hwmon5/device/pp_dpm_mclk | grep '*$' | awk '{print $2}'} ${color}/ 1000Mhz
${color5}GPU Fabric Clk: $alignr${color4}${execi 1 cat /sys/class/hwmon/hwmon5/device/pp_dpm_fclk | grep '*$' | awk '{print $2}'} ${color}/ 1941Mhz
${color5}GPU Link: ${color}${execi 1 cat /sys/class/hwmon/hwmon5/device/current_link_speed} ${color5}GPU State: ${color}${execi 1 cat /sys/class/hwmon/hwmon5/device/power_dpm_state}
${color6}${font :size=12}NETWORK ${hr}$font
${color5}IP ADDRESS:${color}${alignr}${addr enp39s0}
${voffset -5}${if_match "${addr enp39s0}"!="No Address"}${color1}${downspeedgraph enp39s0 24,159 ADFF2F 32CD32 -l -t} ${color2}${upspeedgraph enp39s0 24,159 FF0000 8B0000 -l -t}
${voffset -5}${color5}Download: ${color4}${downspeedf enp39s0}k/s ${alignr}${color5}Upload: ${color4}${upspeedf enp39s0}k/s ${font}${endif}
${color6}${font :size=12}FILE SYSTEMS ${hr}$font
${color5}Mountpoints${goto 100}Free / Total${alignr}I/O
${color2} /${goto 100}${color4}${fs_free /} ${color}/ ${fs_size /} ${alignr}${color4}${diskio}
${color2} /data/raid1${color4}${goto 100}${color4}${fs_free /data/raid1} ${color}/ ${fs_size /data/raid1} ${alignr}${color4}${diskio /data/raid1}
${color2} /data/sn750${color4}${goto 100}${color4}${fs_free /data/sn750} ${color}/ ${fs_size /data/sn750} ${alignr}${color4}${diskio /data/sn750}
${color2} /data/evo840${color4}${goto 100}${color4}${fs_free /data/evo840} ${color}/ ${fs_size /data/evo840} ${alignr}${color4}${diskio /data/evo840}
${color6}${font :size=12}PROCESSES ${hr}$font
${color5}TOTAL:${color4}${alignr}${processes}
${color5}Name ${goto 130}PID${goto 200}MEM${goto 265}CPU
${color2}${top name 1}${color4}${font}${goto 130}${top pid 1}${goto 200}${top mem 1}%${goto 265}${top cpu 1}%
${color2}${top name 2}${color4}${font}${goto 130}${top pid 2}${font}${goto 200}${top mem 2}%${goto 265}${top cpu 2}%
${color2}${top name 3}${color4}${font}${goto 130}${top pid 3}${font}${goto 200}${top mem 3}%${goto 265}${top cpu 3}%
${color2}${top name 4}${color4}${font}${goto 130}${top pid 4}${font}${goto 200}${top mem 4}%${goto 265}${top cpu 4}%
${color2}${top name 5}${color4}${font}${goto 130}${top pid 5}${font}${goto 200}${top mem 5}%${goto 265}${top cpu 5}%
${color2}${top name 6}${color4}${font}${goto 130}${top pid 6}${font}${goto 200}${top mem 6}%${goto 265}${top cpu 6}%
${color2}${top name 7}${color4}${font}${goto 130}${top pid 7}${font}${goto 200}${top mem 7}%${goto 265}${top cpu 7}%
${color2}${top name 8}${color4}${font}${goto 130}${top pid 8}${font}${goto 200}${top mem 8}%${goto 265}${top cpu 8}%
${color2}${top name 9}${color4}${font}${goto 130}${top pid 9}${font}${goto 200}${top mem 9}%${goto 265}${top cpu 9}%
${color2}${top name 10}${color4}${font}${goto 130}${top pid 10}${font}${goto 200}${top mem 10}%${goto 265}${top cpu 10}%${voffset -20}
]];