The Ultimate Organiser for the Console Junkie


Have you ever forgotten an important meeting? Or missed the latest episode of Lost? I’m sure it’s happened to some of you. Juggling tasks is difficult, so instead of trying to keep track of every important thing either in your head or on a piece of paper, why not give computer-based organisers a try?


There are many organiser applications available on the Linux platform, and they’re called Personal Information Managers (PIM). People are mostly familiar with Korganizer and Sunbird as powerpacked PIMs. They are very good, no doubt, but are not the only good applications available in the open source world.

Graphical tools, though intuitive, are often resource hungry. I am sure many of us would prefer solutions with much less resource requirements, yet with an easy and intuitive interface. This is where Calcurse comes into the picture. Calcurse is a text-based calendar and scheduling program with loads of features. The name Calcurse is derived from ‘calendar + ncurses’. You guessed right; it has an ncurses-based interface—which makes it very easy to use.

What is Calcurse?
By using Calcurse you can keep track of your daily tasks, appointments and events. You can also set notifications to tasks, as and when required, and sort the tasks by priority. You can even tag the entries with notes. There is an option to change the colour scheme, change the layout and also change the key-bindings right from the application itself. You don’t even need to edit the configuration files externally, manually. With many additional features like the import and export of the iCal format calendar (Google calendar uses this), auto-save, the ability to run in the background as a daemon, this organiser is one of the best I have ever come across.

An overview
Calcurse can operate in three modes. The first is the non-interactive mode, where you have to pass arguments to the program and get the output on the terminal. The second interactive mode has the interface in ncurses and you have to use your keyboard to run a menu-driven application. The third is the background mode or the daemon mode.

Non-interactive mode: In this mode, you have to pass arguments to the application from the shell and run it. This
mode does not start the ncurses-based user interface but only dumps the output to STDOUT (in this case, the shell). You’ll find a list of all valid arguments along with their descriptions in the man page.

Interactive mode: When you run Calcurse without passing any arguments to it, you will see an interface as shown in Figure 1. This is the mode we are going to concentrate on in this article. You can go through the three sections (appointments, calendar and tasks) using TAB. (Remember, all the keys mentioned in the review are according to the default key-bindings. You can change them to match your needs.) The active section will have a border colour that’s different from the other three sections. The section names are quite self-explanatory. The only thing I could not understand in this interface was the symbols to the left of the date in the appointments section. It turns out that they correspond to the phase of the moon on the current date.

‘ |) ‘ – First quarter of the moon.
‘ (|) ‘ – Full moon.
‘ (| ‘ – Last quarter of the moon.
‘ | ‘ – New moon.
‘ ‘ – (No sign) Phase does not correspond to one of the descriptions above.

The notification bar at the bottom of the three sections displays the current date and time, followed by the file where the calendar database is stored (‘apts’ in Figure 1, which is the default file), along with the time remaining for the start of the next appointment (not shown in Figure 1) in the following 24 hours.

Finally, right at the very bottom is the status bar. It displays the current key-bindings along with the actions tied
to them.

Background mode: In order for Calcurse to run in background mode, the daemon mode option has to be enabled in the configuration files or via the interactive mode. When enabled, the daemon automatically kicks in when you close the interactive mode and, similarly, stops working when the interactive mode is started again.

When in the background mode, Calcurse keeps a check on the upcoming appointments and executes the predefined notification command whenever necessary. You can check if Calcurse is running in the background by passing the –status argument to the application, which gives you the PID of the process if it is running.

Using Calcurse
Let’s now look at how to use Calcurse in the interactive mode. As mentioned earlier, the status bar is quite selfexplanatory;besides, you can always use ‘?’’ to open help. You have to use Ctrl+p and Ctrl+n for the previous and next page in Help. I will not go into more details here.The documentation is very good and there shouldn’t be any problem in using it. Now, we will go into the details regarding the configurations. Pressing c takes you to the configuration menu.

Figure 1: Main window (right after you launch Calcurse)
Figure 1: Main window (right after you launch Calcurse)
Figure 2 : UI colour settings
Figure 2 : UI colour settings
Figure 3: UI Layout options
Figure 3: UI Layout options
Figure 4 : Settings view
Figure 4 : Settings view
Figure 5: Detailed view of an appointment
Figure 5: Detailed view of an appointment

The configuration menu has subcategories, namely the General Settings, Layout, Notify, Colour and Key-bindings. (Pressing the capitalised letter takes you to that particular sub-menu.) Under the general options, you can set the options regarding auto-save, the auto-save time interval, starting of the week, date formats, etc.

In order to set the notifications, go to the Notify sub-menu.Here you can choose whether to display the notification bar or not, and which information to display. The important setting here is the notify-bar_command and notify-bar_warning. The notify-bar_command is executed notify-bar_warning seconds before a flagged appointment. To flag an appointment, highlight the appointment and then press ‘!’. It will be marked as ‘important’ and the notify-bar_command will be executed before this appointment.

Inside the Colour sub-menu, you can change the default colour scheme. The key-bindings sub-menu lists all possible keys and their functions, which can be changed according to your need. The Layout sub-menu allows you to choose between eight predefined layouts for arranging the three windows (appointments, calendar and tasks) inside the terminal.

Import and export
This feature is by far the best feature of this application.You can export your entire calendar in iCal or Pcal
format. And this can then be imported to other organisers.The import function can be used to import iCal format
calendars. Currently, the import function cannot import the notifications set in the iCal format; it also cannot
import the notes. This is a serious flaw, but it’s in line for correction in the next update.

Multiple calendars?
It is possible to have multiple calendars using Calcurse. The default Calcurse files are created in the home directory of the user inside the .calcurse directory. The files are: notes/ – This directory saves the notes created with the appointments and tasks.

conf – This file contains the configuration settings of Calcurse.
keys – This file contains the key-bindings of Calcurse.
apts – This file contains the appointments.
todo – This file contains the to-do (tasks) list.

As you can see, the task and appointment files are different. By simply changing the appointments file, we can have a different calendar entry, keeping the tasks constant. To change Calcurse to a new calendar, open Calcurse with an argument -c, that is:

calcurse -c PathOfTheCalendarDatabaseFile

And the events and appointments from this file will be available with you.

The verdict

Certainly Calcurse is not the best organiser in the world. The obvious glitches in the import function and lack of mouse support are serious problems. However, with its size being less than half a megabyte and the memory requirement also less than 16 MB, this is a gem for people with older hardware.


Please enter your comment!
Please enter your name here