How to schedule appointments and to-do tasks in a Linux terminal

If you are a Linux system administrator who enjoys spending your time in terminal-land, but also needs a way to stay on top of your everyday tasks, appointments and meetings, you will find calcurse to be a very useful tool. calcurse combines a calendar, a to-do list manager, a scheduler and a configurable notification system into one piece of software with a nice ncurses-based interface. At the same time, it does not confine you in a terminal, but also allows you to export your calendars and notes into other printer-friendly formats.

In this article we will explore how to install calcurse on Linux, and teach you how to take advantage of some of its incredible features.

Instaling Calcurse on Linux

calcurse is available in standard repositories of most Linux distributions. In case calcurse is not available on your distribution (like in CentOS/RHEL), you can build it from the source easily once you have gcc and ncurses development files installed.

Debian, Ubuntu or Linux Mint

# aptitude install calcurse


# yum install calcurse


# yum install gcc ncurses-devel
# wget
# tar xvfvz calcurse-3.2.1.tar.gz
# cd calcurse-3.2.1
# ./configure
# make
# make install

Launching Calcurse

Once the installation is complete, you can launch calcurse as a normal user by simply running:

$ calcurse

You will be presented with the following empty interface. If the color scheme does not seem appealing to you, you will be able to change it later.

We will exit the main interface for now by pressing ENTER, 'q', ENTER again, and 'y'. This sequence activates the main menu at the bottom of the interface, tells calcurse to quit, saves our currently opened notes, and finally confirm about exit.

When we run calcurse for the first time, the following directory structure is created in our home directory:

Here is a brief description of each item:

  • The apts file contains all of the user's appointments and events, while the todo file contains the todo list.
  • The conf file, as you probably already guessed, contains the current user's individual settings for his/her calcurse environment.
  • The keys file contains the key bindings that the user has defined (e.g., q or Q to quit, x or X to export contents, and so forth).
  • In the notes subdirectory you will find text files containing description of notes that you can attach to each scheduled item.

Changing the Color Scheme

To change the color scheme for calcurse, follow these steps:

Use the key bindings in the last image to select a foreground and background configuration that better suits your needs:

Adding Appointments and To-do Tasks

While navigating the command menus in the previous section, we saw that pressing the letter 'o' takes us from one menu to the next one. We can think of the second menu as the schedule edit menu:

Thus, we will add a new appointment for today and a new to-do task with the Ctrl + A and Ctrl + T key combinations, respectively. If we want to add an appointment for a date other than today, we can navigate the calendar using the Ctrl + L (+1 day), Ctrl + H (-1 day), Ctrl + J (+1 week), and Ctrl + K (-1 week) key combinations before adding an appointment or to-do task:

The necessary steps to add a to-do task are similar, only starting with Ctrl + T, as explained earlier:

You will then be asked to enter a priority number, and the to-do task will be added to the main screen:

You can now verify that the to-do task and the appointment have been saved in the todo and apts files, respectively, under .calcurse:

Note that you can edit those files either through your favorite text editor or using the menu in the bottom of the calcurse screen. You can switch between panels by pressing the TAB key, and then choose the item you wish to edit:

Setting up Notifications for Events

You can configure notifications via the Notify menu. To do so, follow the same steps as in the case of changing the color scheme, but choosing Notify instead of Colour:

Suppose you want to set up email notifications. Press the number 5 to edit the value of the notify-bar_command as follows:

With the settings outlined above, root@localhost will receive an email notification 300 seconds (or 5 minutes) before the next scheduled task if such task is flagged as important. If you wish to enable this functionality even when calcurse is not running, change the value of notify-daemon_enable to yes. In the current example, dev2 is the localhost's hostname.

Please note that for the sake of demonstration purposes, I have changed the start and/or end time of the original appointment as needed during each step of this tutorial.


In this article we have shown how to set up a versatile scheduler and reminder to help you organize your daily activities and to plan ahead of important events. You may also want to check calcurse's PDF manual, but feel free to drop me a line using the comment form below if you have any questions. Your comments are always more than welcome and I'll be glad to hear from you!

Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

Support Xmodulo

Did you find this tutorial helpful? Then please be generous and support Xmodulo!

The following two tabs change content below.
Gabriel Cánepa is a GNU/Linux sysadmin and web developer from Villa Mercedes, San Luis, Argentina. He works for a worldwide leading consumer product company and takes great pleasure in using FOSS tools to increase productivity in all areas of his daily work. When he's not typing commands or writing code or articles, he enjoys telling bedtime stories with his wife to his two little daughters and playing with them, the great pleasure of his life.

6 thoughts on “How to schedule appointments and to-do tasks in a Linux terminal

  1. calcurse is great. I've been using it as my only calendaring program for over three years. So much faster and more fool-proof than Outlook. And I love that you can simply use something like 'less .calcurse/apts' to view every single appointment you've made in calcurse. It's great for summarizing a year's activity (if your job requires that kind of thing).

    I use calcurse on a server so that I always have access to it no matter what computer I'm on. If you want to also have it on your phone, you have a few options: export it as html/text and put that file up via a web server; export into some format and email that to yourself every day; or export it as an ical file, serve it up with a web server, and then subscribe to that using your calendar's ical subscription feature (both iPhone and Android's default calendar apps can do this).

  2. Looks useful. Thanks for sharing. Was looking for something like this. As a suggestion, why not start shooting short, one minute screencasts for the posts that you do and append it at the end of your blog post.

    In any case, thanks for sharing !

  3. As a long time vim user, I don't like emacs very much, but there's just no better tool than Org mode. One of the best things about it is the date picker it has. It allows you to set date in terms you currently think about it. Need it done on Friday? Type in fri. In ten days? +10. December 20? 20. January 10? 10. Any certain date? Type in the date. It's brilliant.

Leave a comment

Your email address will not be published. Required fields are marked *