Conky Configuration Files

Table of Contents

Conky Modules

Conky is highly customizable, with a bit of Lua knowledge you can create an intricate conky display. As usual, I start small, then build this up eventually.

Conky MPRIS

conky-mpris-2025-05-16_20-28.png

Figure 1: conky MPRIS

This is just a simple MPRIS status using conky. This will works with most media player out of the box, even for YouTube. MPD will need mpd-mpris, since MPD doesn't support it. This will need playerctl for querying metadata.

conky.config = {
   color0 = '#073642',
   color1 = '#dc322f',
   color2 = '#859900',
   color3 = '#b58900',
   color4 = '#268bd2',
   color5 = '#d33682',
   color6 = '#2aa198',
   color7 = '#eee8d5',
   color8 = '#6c7c80',
   color9 = '#dc322f',

   font = 'FiraCodeNerdFontMono:pixelsize=8',
   alignment = 'bottom_right',
   use_xft = true,
   update_interval = 1,
   total_run_times = 0,
   own_window = true,
   own_window_transparent = false,
   own_window_type = 'override',
   own_window_class = 'Conky',
   own_window_argb_visual = true,
   own_window_argb_value = 0,
   double_buffer = true,
   draw_shades = false,
   draw_outline = false,
   draw_borders = false,
   draw_graph_borders = true,
   stippled_borders = 0,
   border_width = 0,
   xftalpha = 1.0,
   gap_x = 10,
   gap_y = 30,
   text_buffer_size = 512,
};
conky.text = [[
${offset 85}${color6}${font pixelsize=8:bold}${exec playerctl metadata --format '{{artist}}'}${font}${color}
${offset 85}${color5}${exec playerctl metadata --format '{{title}}'}${color}
${offset 85}${color8}${exec playerctl metadata --format '{{album}}'}${color}
${offset 85}${color8}${exec playerctl metadata --format '{{xesam:contentCreated}}'}${color}
${offset 85}${color4}────────────────────────────────────────────────────${color}
${offset 85}${color8}${exec playerctl metadata --format '{{status}}'} ${exec playerctl metadata --format '{{duration(position)}}'} / ${exec playerctl metadata --format '{{duration(mpris:length)}}'}${color}
${eval $${image ${exec playerctl metadata mpris:artUrl|sed 's/file:\/\///g'} -s 80x80}}
]];

System Information

conky-system-2025-05-16_20-28.png

Figure 2: conky system information

I mostly use only builtin function provided by conky itself rather than relying on other packages, the only external packages (beside the conky dependency) is xorg-xdpyinfo (part of xorg I think?).

conky.config = {
   color0 = '#073642',
   color1 = '#dc322f',
   color2 = '#859900',
   color3 = '#b58900',
   color4 = '#268bd2',
   color5 = '#d33682',
   color6 = '#2aa198',
   color7 = '#eee8d5',
   color8 = '#6c7c80',
   color9 = '#dc322f',

   default_color = '#fdf6e3',
   font = 'FiraCodeNerdFontMono:pixelsize=8',
   alignment = 'top_right',
   use_xft = true,
   update_interval = 1,
   total_run_times = 0,
   own_window = true,
   own_window_transparent = false,
   own_window_type = 'override',
   own_window_class = 'Conky',
   own_window_argb_visual = true,
   own_window_argb_value = 0,
   double_buffer = true,
   draw_shades = false,
   draw_outline = false,
   draw_borders = false,
   draw_graph_borders = true,
   stippled_borders = 0,
   border_width = 0,
   xftalpha = 1.0,
   gap_x = 10,
   gap_y = 110,
   text_buffer_size = 512,
};
  conky.text = [[
${color4}$hr${color}
${alignr}${offset 0}${color5}${font pixelsize=10}${nodename}${font}${color}
${alignr}${color8}${tztime}${color}
${alignr}${color8}${sysname} ${machine}${color} - ${exec lsb_release -ds | sed 's/"//g'} ${kernel}
${alignr}${color8}Uptime:${color} ${uptime_short}
${alignr}${color8}Resolution:${color} ${exec xdpyinfo | awk '/dimensions/{print $2}'}
${alignr}${color8}Logged in users:${color} ${user_names}
${color4}$hr${color}
${alignr}${color5}${font pixelsize=10}CPU${font}${color}
${alignr}${color8}CPU Clock Speed:${color}${freq_g} GHz
${alignr}${color8}CPU 0 ${color2}${cpubar cpu0 6, 120}${color}
${alignr}${color8}CPU 1 ${color2}${cpubar cpu1 6, 120}${color}
${alignr}${color8}CPU 2 ${color2}${cpubar cpu2 6, 120}${color}
${alignr}${color8}CPU 3 ${color2}${cpubar cpu3 6, 120}${color}
${color4}$hr${color}
${alignr}${color5}${font pixelsize=10}Processes${font}${color}
$alignr ${top name 1} ${color8}PID:${color} ${top pid 1} ${color8}CPU:${color} ${top cpu 1} ${color8}MEM:${color} ${top mem 1}
$alignr ${top name 2} ${color8}PID:${color} ${top pid 2} ${color8}CPU:${color} ${top cpu 2} ${color8}MEM:${color} ${top mem 2}
$alignr ${top name 3} ${color8}PID:${color} ${top pid 3} ${color8}CPU:${color} ${top cpu 3} ${color8}MEM:${color} ${top mem 3}
$alignr ${top name 4} ${color8}PID:${color} ${top pid 4} ${color8}CPU:${color} ${top cpu 4} ${color8}MEM:${color} ${top mem 4}
$alignr ${top name 5} ${color8}PID:${color} ${top pid 5} ${color8}CPU:${color} ${top cpu 5} ${color8}MEM:${color} ${top mem 5}
${color4}$hr${color}
${alignr}${color5}${font pixelsize=10}Memory${font}${color}
${alignr}${color8}Ram:${color} ${memperc}%${color2} ${membar 5,120}${color}
${alignr}${mem} / ${memmax}
${alignr}${color8}Swap:${color} ${swapperc}% ${color2}${swapbar 5,120}${color}
${alignr}${swap} / ${swapmax}
${color4}$hr${color}
${alignr}${color5}${font pixelsize=10}Network${font}${color}
${if_up wlp0s20u5}${alignr}${color8}wlp0s20u5${color} Downspeed: ${downspeed wlp0s20u5}/s Upspeed: ${upspeed wlp0s20u5}/s
${alignr}${color8}Bitrate:${color} ${wireless_bitrate wlp0s20u5} ${color8}Channel: ${color}${wireless_channel wlp0s20u5} ${color8}ESSID: ${color} ${wireless_essid wlp0s20u5}
${color2}${downspeedgraph wlp0s20u5 32,155 104E8B 0077ff}${color} $alignr${color2}${upspeedgraph wlp0s20u5 32,155 104E8B 0077ff}${color}${endif}
${eval $${if_empty $${iface 1}} $$else $${eval $${if_up ${iface 1}} ${alignr}${color8}${iface 1}${color} Downspeed: ${eval $${downspeed $${iface 1}}}/s Upspeed: ${eval ${upspeed $${iface 1}}}/s
${color2}${eval $${downspeedgraph ${iface 1} 32,155 104E8B 0077ff}}${color} $alignr${color2}${eval $${upspeedgraph ${iface 1} 32,155 104E8B 0077ff}}${color}$${endif}}$${endif}}
${color4}$hr${color}
  ]];

Dependencies

playerctl
for media.
xdpyinfo
for resolution.

Scripts

This script will be called from the window manager startup. As most of my scripts, the path will be ~/.local/bin/conky-start~.

killall -USR1 conky
[ -e "${HOME}"/.config/conky/conky-mpris.conf ] && conky -c "${HOME}"/.config/conky/conky-mpris.conf &
[ -e "${HOME}"/.config/conky/conky-system.conf ] && conky -c "${HOME}"/.config/conky/conky-system.conf &

Date: 2025-05-10 Sat 00:00

Author: Kristian Alexander P

Created: 2025-05-17 Sat 07:24