Skip to main content

So, you would like to know information about your system on your desktop for easy access. You can run conky on your regular desktop, or perhaps you run something a little more custom like i3WM. Conky is mostly written in C++. The earliest commit we could find was from 2010 on GitHub. The most interesting thing about conky is the customization that you can build on. In fact, in some distributions they have many designs to choose from. You can have one nice informative conky or many, all tuned to listen to different things.

Today we will cover how to install conky. We will cover how to build up one conky, making sure to add system defined objects. Next we will show you how to split this conky into pieces to be set with X/Y settings. Now let’s get our obligatory screenshots on with some data displays.


Installing conky is pretty straightforward, as conky has been around a while. So, you can most likely just use your package manager to download conky. We will give you the process for Arch, Debian, and RHEL distributions.


sudo pacman -S conky


sudo apt install conky


sudo dnf install conky

Now you should have a default conky file located /etc/conky/conky.conf. We will copy the contents into a similar location in our .config file in our home directory.

mkdir ~/.config/conky && cp /etc/conky/conky.conf ~/.config/conky/conkyrc

Alternatively, you can just leave it in your home directory named .conkyrc. We can check to see if we were successful like this.

ls ~/.config/conky
create conky directories and populate config files

Now there is one more thing to do so you can see what we will be starting with.

conky -c ~/.config/conky/conkyrc
default style and monitoring for conky

Here we are calling conky from terminal with the -c for configuration option, then pointing to the file we just copied to. This file will give you the default conky. It is rather uneventful and does not seem to match the system, as it is black and white. In addition, you want to avoid having to call it all the time in terminal. Fear not, we will get those problems solved one by one.


Now that we have a fresh copy of the default configuration in our home directory we can check out what is going on in there.

cat ~/.config/conky/conkyrc
cat conky config

Now as you can see in the comments at the top, our configuration file is written in Lua. Don’t worry about it being a language so much as having fun. Check out my GitHub repository to help you get started. We will work with a few pieces to create a single conky.

vim ~/.config/conky/conkyrc

We can go ahead and delete between these brackets by typing dd on the lines we wish to delete. To edit, we can type a.

conky.text = [[

Now we will add the nameplate code at the bottom, right where we just deleted the code in our file. We will need to install figlet for this to work. So let’s go ahead and do that.


sudo pacman -S figlet


sudo apt install figlet


sudo dnf install figlet

The following code only uses the text section rather than the settings in the top. If you are running i3WM, try copying the whole file in your configuration file instead.

${execi 1000 figlet -f shadow "Words Here"}
${font bold:size=10}Your-SPIN ${hr 3}
${time %l:%M:%S} $alignr ${time %m-%d-%y}${font}

We will need to save the file by first hitting Esc, then we will type :wq, to write and quit. Now you can go ahead and call it again in terminal to see what you think.

conky -c ~/.config/conky/conkyrc
conky edited config to nameplate

Be sure to edit the code where it says, “Words Here”, as this the section where we are calling figlet inside of conky to draw ASCII characters into words. Also make sure to remember you can run scripts in conky by first using “execi 1000” in front of it. For other options in figlet try this.


This will give you a list of fonts and a demo for each. Allowing you to change the code as you need.

vim ~/.config/conky/conkyrc

To edit, we can type a. Now we will add the system code at the bottom under the code we just added.

${font bold:size=10}SYSTEM ${hr 3}${font}
$sysname $alignc $kernel $alignr $machine
Uptime $alignr $uptime
Processes $alignr ${color}$processes / Running:${color}$running_processes
Freq $alignr $freq_g GHz
${font bold:size=10}BATTERY ${hr 3} ${font}
STATUS $alignr ${battery BAT1}
${battery_bar BAT1}
${font bold:size=10}MEMORY ${hr 3}${font}
RAM  $alignc $mem / $memmax $alignr $memperc%
${font bold:size=10}DISK USAGE ${hr 3}${font}
/    $alignc ${fs_used /} / ${fs_size /} $alignr ${fs_used_perc /}%
${fs_bar /}
/home $alignc ${fs_used /home} / ${fs_size /home} $alignr ${fs_used_perc /home}%
${fs_bar /home}

We will need to save the file by first hitting Esc, then we will type :wq, to write and quit. Now we should see a larger conky.

conky -c ~/.config/conky/conkyrc
added conky monitoring

This includes system information, a battery if you have one, RAM by percentage, and finally both root and home partition by percentage. Not everyone has a home partition, but here you go. This is pretty much how you style the text. You can really explore more by messing with the settings. You can see font manipulation object tags in the code we added from the repository. Style away, make sure to play with it, as you will learn much about conky.


Now we are going to go ahead and make multiple conky configuration files and leave them in the directory we made earlier. We will go ahead and just download it from our GitHub. My settings are for display on i3WM. So change the own_window_type to desktop if you are not using i3WM. Make sure to play with the color as well, you can add HEX values in default_color or any of the other color fields. Just have fun. Remember, conky starts out as an ugly duckling, but you can make it yours.

git clone && cd Conky-Learn && cp -r conky ~/.config

This will give you every conky in the repository, directly in the directory we created before. This is what it looks like in i3WM with just three of them active.

i3 config results

Now you can see the nameplate conky on the bottom left. My system’s conky on the top right and the CPU conky on the bottom right. I turned off my network conky, as I have it set to display network IPs. If you don’t need something like this, then you can see that you don’t need to add it. In i3WM you can just add this to your I3 config file like so.

# Conky
exec --no-startup-id conky -d --config ~/.config/conky/config-nameplate.conf
exec --no-startup-id conky -d --config ~/.config/conky/config-calender.conf
exec --no-startup-id conky -d --config ~/.config/conky/config-network.conf
exec --no-startup-id conky -d --config ~/.config/conky/config-system.conf

To run conky on a regular distribution, you can click the icon. You can also check out some of the bundle packs that have a GUI. Now you can adjust the X/Y settings to move them into place. Hey, why not play with all the settings little by little, so you can test and fix any breakage. It is best to start them in terminal until you like their placement and design. There are also a million and one themes on GitHub. Full of very cool much more graphic setups. Thanks for reading.

Boyd Gordon

Looking forward to researching that next project. Writing the next blog and living life to the fullest with my family.

Leave a Reply