Take Your To Do List to the Command Line with iKog

I like a good GUI as much as the next person, but some things beg for a little more simplicity. One of those things is a to do list. Which is why I turn to the command line and a text file for mine.

Of the several command line to do applications out there in the Linux ecosystem, which one should you choose? That’s up to you to decide, but you might want to take a look at iKog. Short for it Keeps on growing, iKog is a Python script that helps you manage your tasks. If you’re into Getting Things Done (GTD for short, a popular method for personal organization), then it’s worth the time to check out iKog.


First off, make sure that you have Python installed on your computer. If you’re using Linux, then chances are that you do. To check, open a terminal window and type which python. The command should return something like /usr/bin/python. If not, install Python using your package manager or by downloading an installer or source package.

From there, download the script. For convenience, grab the file ikog.py.gz. Once it’s downloaded, open a terminal window and navigate to the directory in which the file was saved. Then, run the following commands:

The commands extract the script from its archive, make it executable, and rename the script to ikog. The last command isn’t necessary; I just do that to save keystrokes.

From there, move the file to a location in your path, for example, /usr/local/bin.

Using iKog

Whenever you want to work with your task list, open a terminal window and run the command ikog (or ikog.py, if you didn’t rename the script). You’ll see a a program screen and not much else. The first thing that you want to do is add a task. To do that, type add [task] — for example, add Write iKog post for MTE. Then, press Enter.

Add a task

Remember when I mentioned GTD a few paragraphs ago? Well, GTD has a concept called contexts. A context is a thing, place, or person that you need to complete a task. All contexts have an @ sign in front of them For example, @HomeOffice denotes a task that you need to do in your home office. Contexts also enable you to filter tasks; more on this soon. To include a context when adding a task, type add @Context — for example, add Research neighborhood history @Library.

Adding a context

Adding tasks is one thing, but how do you review them? By typing list, which displays all of your tasks.

Listing tasks

If you want to filter by a particular context, just type list @Context — for example, list @HomeOffice.

Notice that in the list, each task has a number. That number comes in handy when you want to complete a task. To do that, type done [task number] — for example, done 1. You’ll be asked to confirm that you want to complete the task. Just type Yes and press Enter.

Completing a task

That’s great, but where is my data stored?

Believe it or not, it’s stored within the iKog script. That makes iKog very portable. If you need to access your to do list across multiple computers that have Python installed on them, you can get a Dropbox account and save the iKog script in a folder in Dropbox. Or save the script to a USB flash drive. Just run iKog from either location.

Of course, storing the data in the script opens you up to problems. What happens if you accidentally delete the script? In iKog, you can enter the command export to save your data in a text file called ikog.tasks.txt. If something happens to the script, you can install a fresh version and then enter the command import ikog.tasks.txt to pull in your data.

iKog is easy to use and is very flexible. It has a number of useful options – this post only took a look at a handful of them. If you want to make your to do list portable, then makes doing that very easy.

Photo credit: xololounge

Scott Nesbitt

Scott is a writer of various things -- documentation, articles, essays, and reviews -- based in Toronto, Canada. He loves to play with tech, and to write about it too. Scott hasn't snagged that elusive book contract. Yet.