Making use of Conky

A lightweight versatile app that runs right on your desktop


When it comes to all the initial install and configuring Conky there are plenty of resources and guides available. Here are some of the more useful places to check out:

There’s tons more out there that any casual google search is going to bring up so there’s no need for me to go through that worn path.

One useful aspect of Conky that is pretty neat is that once it is up and running you can easily share or import other’s Conky configs. In my own setup I’ve made use of covering some essential values such as

  • Kernel version
  • CPU loads and histogram
  • Memory load
  • Disk space availability
  • IP addresses for both internal and external
  • Top processes

What is neat about the network info is inclusion of adding the strength of the Wifi signal in case there were connectivity issues this will help identify the issue. Another thing to note is that since network interfaces names will vary from system to system you would need to find the interface names by running netstat -i from the terminal.

Here’s a copy of my Conky config, the only areas that will need to be changed are the interface naming.

-- vim: ts=4 sw=4 noet ai cindent syntax=lua
--[[
Conky, a system monitor, based on torsmo

Any original torsmo code is licensed under the BSD license

All code written since the fork of torsmo is licensed under the GPL

Please see COPYING for details

Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
Copyright (c) 2005-2012 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS)
All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
]]

conky.config = {
	
	update_interval = 1,
	cpu_avg_samples = 2,
	net_avg_samples = 2,
	out_to_console = false,
	override_utf8_locale = true,
	double_buffer = true,
	no_buffers = true,
	text_buffer_size = 32768,
	imlib_cache_size = 0,
	own_window = true,
	own_window_type = 'normal',
	own_window_argb_visual = true,
	own_window_argb_value = 50,
	own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
	border_inner_margin = 5,
	border_outer_margin = 0,
	xinerama_head = 1,
	alignment = 'bottom_right',
	gap_x = 0,
	gap_y = 33,
	draw_shades = false,
	draw_outline = false,
	draw_borders = false,
	draw_graph_borders = false,
	use_xft = true,
	font = 'Ubuntu Mono:size=12',
	xftalpha = 0.8,
	uppercase = false,
	default_color = 'white',
	own_window_colour = '#000000',
	minimum_width = 300, minimum_height = 0,
	alignment = 'top_right',

};
conky.text = [[

${voffset -16}${font sans-serif:bold:size=18}${alignc}${time %H:%M}${font}
${voffset 4}${alignc}${time %A %B %d, %Y}
${font}${voffset -4}
${font sans-serif:bold:size=10}SYSTEM ${hr 2}
${font sans-serif:normal:size=8}$sysname $kernel $alignr $machine
Host:$alignr$nodename
Uptime:$alignr$uptime
File System: $alignr${fs_type}
Processes: $alignr ${execi 1000 ps aux | wc -l}

${font sans-serif:bold:size=10}CPU ${hr 2}
${font sans-serif:normal:size=8}${execi 1000 grep model /proc/cpuinfo | cut -d : -f2 | tail -1 | sed 's/\s//'}
${font sans-serif:normal:size=8}${cpugraph cpu1}
CPU1: ${cpu cpu1}% ${cpubar cpu1}
${font sans-serif:normal:size=8}${cpugraph cpu2}
CPU2: ${cpu cpu2}% ${cpubar cpu2}
${font sans-serif:normal:size=8}${cpugraph cpu3}
CPU3: ${cpu cpu3}% ${cpubar cpu3}
${font sans-serif:normal:size=8}${cpugraph cpu4}
CPU4: ${cpu cpu4}% ${cpubar cpu4}

${font sans-serif:bold:size=10}MEMORY ${hr 2}
${font sans-serif:normal:size=8}RAM $alignc $mem / $memmax $alignr $memperc%
$membar
SWAP $alignc ${swap} / ${swapmax} $alignr ${swapperc}%
${swapbar}

${font sans-serif:bold:size=10}DISK USAGE ${hr 2}
${font sans-serif:normal:size=8}/ $alignc ${fs_used /} / ${fs_size /} $alignr ${fs_used_perc /}%
${fs_bar /}

${font Ubuntu:bold:size=10}NETWORK ${hr 2}
${font sans-serif:normal:size=8}Local IPs: $alignr ${execi 1000 ip a | grep inet | grep -vw lo | grep -v inet6 | cut -d \/ -f1 | sed 's/[^0-9\.]*//g'}

# Public IP
# Ethernet
	${if_up enp0s31f6}${goto 30}${font Ubuntu:style=Bold:size=10}enp0s31f6: ${font} $alignr ${addr enp0s31f6}${endif}
	${if_existing /sys/class/net/enp0s31f6/operstate up}${goto 30}${font Ubuntu:style=Bold:size=10}Download: ${font} ${downspeedf enp0s31f6} KB/s $alignr ${totaldown enp0s31f6}
	${goto 30}${font Ubuntu:style=Bold:size=10}Upload: ${font} ${upspeedf enp0s31f6} KB/s $alignr ${totalup enp0s31f6}${endif}
# Wireless
	${if_up wlp2s0}${goto 30}${font Ubuntu:style=Bold:size=10}wlp2s0: ${font} $alignr ${addr wlp2s0}${endif}
	${if_existing /sys/class/net/wlp2s0/operstate up}${goto 30}${font Ubuntu:style=Bold:size=10}ESSID: ${font} $alignr ${wireless_essid wlp2s0}
	${goto 30}${font Ubuntu:style=Bold:size=10}Download: ${font} ${downspeedf wlp2s0} KB/s $alignr ${totaldown wlp2s0}
	${goto 30}${font Ubuntu:style=Bold:size=10}Upload: ${font} ${upspeedf wlp2s0} KB/s $alignr ${totalup wlp2s0}
	${goto 30}${font Ubuntu:style=Bold:size=10}Strength: ${font} $alignr ${wireless_link_qual_perc wlp2s0}%
	${goto 30}${wireless_link_bar wlp2s0}${endif}
	# Top processes
External IP: $alignr ${execi 10000  wget -q -O- http://ipecho.net/plain; echo}
${font sans-serif:normal:size=8}Down: ${downspeed wlp2s0}  ${alignr}Up: ${upspeed wlp2s0} 
${color lightgray}${downspeedgraph wlp2s0 80,130 } ${alignr}${upspeedgraph wlp2s0 80,130 }$color
${font sans-serif:bold:size=10}TOP PROCESSES ${hr 2}
${font sans-serif:normal:size=8}Name $alignr PID   CPU%   MEM%${font sans-serif:normal:size=8}
${top name 1} $alignr ${top pid 1} ${top cpu 1}% ${top mem 1}%
${top name 2} $alignr ${top pid 2} ${top cpu 2}% ${top mem 2}%
${top name 3} $alignr ${top pid 3} ${top cpu 3}% ${top mem 3}%
${top name 4} $alignr ${top pid 4} ${top cpu 4}% ${top mem 4}%
${top name 5} $alignr ${top pid 5} ${top cpu 5}% ${top mem 5}%
${top name 6} $alignr ${top pid 6} ${top cpu 6}% ${top mem 6}%
${top name 7} $alignr ${top pid 7} ${top cpu 7}% ${top mem 7}%
${top name 8} $alignr ${top pid 8} ${top cpu 8}% ${top mem 8}%
${top name 9} $alignr ${top pid 9} ${top cpu 9}% ${top mem 9}%
${top name 10} $alignr ${top pid 10} ${top cpu 10}% ${top mem 10}%

]];