2. Overview

2.1. Creation history

I started thinking about this project when I was finishing my Ph.D. in Astrophysics… It started to be a little hard to organize myself, and I really needed a good tool to help me in that difficult task ;)

I like programs which use Text User Interfaces, because they are simple, fast, portable and efficient, so I thought about working on coding a simple calendar using such an interface. Moreover, I wanted to go on learning the C language, which I only used for a while during my undergraduate studies. So I thought that would be the good project to start in order to get organized and to learn about a few C things !

Unfortunately, I finished my Ph.D. before finishing calcurse, but anyway, I still wanted to work on it, hoping it would be helpful to other people. So here it is…

But why calcurse anyway ? Well, it is simply the concatenation of CALendar and nCURSEs, the name of the library used to build the user interface.

2.2. Important features

Calcurse is multi-platform and intended to be lightweight, fast and reliable. It is to be used inside a console or terminal, locally or on a distant machine within an ssh (or similar) connection.

Calcurse can be run in two different modes : interactive or non-interactive mode. The first mode allows oneself to view its own personal organizer almost everywhere, thanks to the text-based interface. The second mode permits to easily build reminders just by adding calcurse with appropriate command line arguments inside a cron tab or within a shell init script.

Moreover, calcurse was created with the end-user in mind, and tends to be as friendly as possible. This means a complete on-line help system, together with having all of the possible actions displayed at any time inside a status bar. The user interface is configurable, and one can choose between several color and layout combinations. Key bindings are also configurable, to fit everyone’s needs. Last, a configurable notification system reminds user of upcoming appointments. The reminders are sent even if the user’s interface is not running, as calcurse is able to run in background.