Productivity Tip 2: Calendar Apps

I don’t use calendar apps because I’m punctual and attentive about things like scheduling. I use them because no matter how punctual and attentive I try to be about schedules, I’m really not. Without them, I’d do a worse job prioritizing events and let things conflict more often than not. At least that’s what I think.

I used to be a fan of Sunbird and Lightning from Mozilla. Sunbird is their standalone version and Lightning integrates into Thunderbird. These are fine if you have a fast processor and lots of RAM. They’re dreadfully slow if you don’t.

Instead, I’ve become a very big fan of calcurse. This is a three-pane console app that handles just about everything you need from a scheduling application. In the default main panel is the daily calendar. On the right side are two more panes. On top is a navigable monthly calendar which is used for navigating to the day that shows up in the main panel. Beneath the monthly calendar is a to do list.

By default, the navigable monthly window is active. It can be toggled with a tab or you can use a keybinding to set tasks in the other two panes — ctrl-a to add an event to a daily calender or ctrl-t to add to the to do list. Users of screen will see an immediate problem with using the default binding: ctrl-a is the preceding escape used in screen. So I use tab.

Setting events is very straightforward. The entry area is hinted so users can enter start and end times, events, priority (on to do entries), etc. Commands are also hinted in a fashion of pine/pico across the bottom part of the terminal.

Its power doesn’t end with keeping events straight. You can use multiple calendars with the -c filename flag (it will use its default if you don’t use -c). You can export your calendar to an ICS calendar file that anyone with just about any other mail application or web-based calendar can import (I have a cron job that does this every week and I use an alias to pipe it to a file as needed) by using the -x option and piping it to filename.ics — e.g.,
% calcurse -x > lucky13.ics

It can also be used to print out notes, the to do list, or any particular day’s events. See the documentation page on the calcurse link above for examples.

Okay, you say, but what about other programs like remind and wyrd?

Those are also certainly very nice. The reason I prefer calcurse is because it doesn’t have any unusual requirements (like ocaml), because it’s very easy to use (the hints are right there in front of you if you forget what you’re doing), and I think it’s every bit as flexible as anything else out there. If not more so.

And why is it better than Sunbird? It loads immediately. I can export a calendar in a fraction of a second even on an older computer. I can generate my to do list and either print it out in a terminal, pipe it to a file, or “:r! calcurse -t” (or -d) inside vim and include it in a note or report without having to do or open anything else.

Anything that helps you schedule your life shouldn’t take up an extraordinary amount of time. Not to compile, not to start, not to use, and not to quickly get information out of it. Of all the calendaring applications I’ve tried, calcurse lets me get things done most quickly.

6 Responses to “Productivity Tip 2: Calendar Apps”

  1. distortedstar Says:

    Do you know what calendar format calcurse uses? I’m assuming it’s not ical. Would be cool to sync with google calendar. Sync capability is basically the only reason I’m still using Evolution, which is a bit of clunker. *sigh*

  2. lucky Says:

    It uses its own internally, exports to ical (ics). No import. Yet. This is what its format looks like:

    06/06/2008 @ 09:00 -> 06/06/2008 @ 11:00 |editing
    06/06/2008 @ 11:00 -> 06/06/2008 @ 12:00 |conf call – see email
    06/06/2008 @ 12:00 -> 06/06/2008 @ 13:00 |errands, lunch

    Basically: start-date, separator, start-time, separator, end-date, separator, end time, separator, event. I may play with it and see what I can do to get csv (is that what Google is still using?) into that format, along with figuring out the repetition strings. It’s now on my to do list, but it’s an 8. Then it should be easy to sync (script/cron or alias) each way. Right?

    FWIW, google calendar doesn’t work so well in elinks, but gmail does (it’s blazing fast without javascript though it lacks all the js “features”). That may change if/when I recompile elinks with js. That’s a 6 on todo list.

  3. distortedstar Says:

    I think google is all ical. I know pulling it down would be doable via command line script, but I’m not sure about methods for syncing back up.

    I love gmail, because it works so well in either a full featured browser, text mode browser, or from a mobile device. I’ve tried tons of text mode browsers; I also really like elinks. Not trying to get off topic, but I know you mentioned using Opera for graphics in another post. Doesn’t Elinks2 offer some sort of graphics support?

  4. lucky Says:

    Sync up would be no problem because calcurse has an export capability already — just run
    calcurse -x > filename.ics
    and you get a nice ical file that can be used by whatever app can read it.

    I don’t know of elinks2, but links2 has some capabilities for displaying graphics (fb mode, iirc). Alas, links2 lacks other features found in elinks. Another text mode browser (it’s really a pager) with inline graphics rendering is w3m.

    My reason for using a text-only browser is to speed up my browsing. Rendering each image takes time. Each image displayed means I have more scrolling to get the content I want. It also invariably means more ads, which I prefer to avoid.

    If there’s content on a page that I think I want, I can always download whatever it is. That’s one of the cool things about elinks — move to an image tag, see the status bar, decide if I want it, either hit return and navigate to download it or just hit d (for download) or even set up a MIME association so it opens automatically in an image viewer. I just download stuff I think I want to a tmp-img directory and then cron cleans it out daily.

    Using two browsers isn’t a handicap. If I open opera (or dillo or firefox), it’s one keybinding to open and another to toggle back and forth (alt-tab in most window managers, etc.). Opera works great without mouse control. I also use vimperator in firefox so I can browse without grabbing the mouse.

  5. culot Says:

    I am Frederic, the author of calcurse. I found your post today and I am happy to see that calcurse is useful to you.

    Concerning calcurse internal format, I use my own as you said. Actually this was one of my wife’s requirements (she wanted to be able to ‘read’ her calendar information without the need to use any program for that, just ‘more ~/.calcurse/apts’ and this is done) !
    So I prefered not to use the ical format, which is more complicated to me. Anyway, since last calcurse version (2.3) which was released last week, it is now possible to import ical files. The sync capabilities related problems mentioned in the above comments should be fixed now, as calcurse is now able to import / export ical files.

    Regarding the keybindings and the use of calcurse with screen, you are right to say that there is a problem as CTRL-A is the default escape key for screen. Actually I always use screen too, but I redefined the keys so I did not think about that problem! Anyway, make calcurse keys user-definable is on my todo list, I will try to implement this feature as soon as possible.

    Many thanks for your post.
    Best regards.

  6. lucky Says:

    Hi, Frederic.

    Thank you for writing and releasing calcurse! I’m glad to see that you’re continuing to improve upon it and the new features (like importing ical) should make it more useful for an even wider audience.

    As far as keybindings, I think it’s always nice to allow users to set their own because so many things — window managers, shells, screen, etc. — can overshadow the bindings used by various apps. At least it still works via tabbing so I can’t complain. I’ve stuck with the default binding in screen because the only thing that binding clobbers, at least in my experience, is the “back to start of line” sequence for emacs mode in my shell and I run my shell in vi mode.

    Side note which I may add a post about sometime: I’ve been using emacs again lately to see if I can justify its size as a worthwhile trade-off for a more “integrated” environment. I just started playing with org-mode this week. While it seems quite nice and flexible (I love being able to export ASCII and HTML from an outline with just a couple keystrokes!), it has a steeper learning curve than something like calcurse. You’re to be commended for writing something that’s both easy to use and very functional.

    I’ll upgrade to version 2.3 shortly. Thanks again!


Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: