palm2ical: Usage


palm2ical is a program that reads Palm databases as made available on Windows desktop computers via the Palm Desktop program. It converts the applicable data (datebook, todo, memopad) to iCalendar (RFC 2445) format, which is the format that Apple's iCal program uses.

You see, I'm a Switcher.

But I have a little problem, because I still use those dorky PC things at work, etc, and so I still use the Windows version of Palm Desktop. But I want my Palm data available via iCal. Thus springs the need for some hacking.

Note that the conversion is one-way. There is no synchronization story here. Palm data is converted to iCal data. You can't go the other way.

I currently run the program against my live Palm databases, and then publish the resulting .ics on a web site, which I then subscribe to from iCal. Works great.


This program is written in Java. Tested on Mac OSX 10.2.6, JRE 1.4.x. Currently requires a JRE or JDK >= 1.3.x, although it may well run on 1.2.x as well (I'll check this out some time). I'll probably also make sure it can run on IBM's J9 VM, since I work on that particular product :-).

Anyhoo, I'll leave you to your own devices to get a JRE from somewhere.

Invoke the program as follows:

java -jar palm2ical.jar [options] parameters


There are a lot of options you can use, but there is only one non-option parameter: the directory containing your palm databases. This should be the directory name that contains the directories that contain your databases. Typically, the name of the file is a munged version of your name.

The directory name may be specified fully qualified or relative.


The options are all optional, but you will at a minimum want to use the -calName and -output options to avoid having to live with the defaults. The default values for all options are listed when you run the program requesting help, which you do by running with no options, or with the -help option.

Options either take a value (as specified via <type>, where type is string, etc; or they are boolean. For boolean options, use without the no prefix to indicate positive; use the no prefix to indicate negative.

Options are case insensitive.

To pass spaces in an option value, use double quotes as per your platform.

  • -calName <string>
    human readable name of the calendar. This sets an Apple-specific property in the output file for the calendar name, as it will show up in your list of calendars.

  • -output <string>
    name of the calendar output file. The file name should probably use the 'standard' .ics extension. The file name can be specified as a fully qualified or relative file name.

  • -alarmSoundURI <string>
    URI to use for alarm sounds. iCal has a way to do audible alarms; the actual sound should be one of the ones in the iCal "Play Sound" list you see in the Event Info window for an event.

  • -[no]processDateBook
    [do not] process the DateBook.

  • -[no]processToDoList
    [do not] process the ToDo List.

  • -[no]processMemoPad
    [do not] process the Memo Pad.

  • -[no]processPrivate
    [do not] process private items.

  • -[no]processCategories
    [do not] process categories. Will add CATEGORIES to EVENT, VTODO, and VJOURNAL entries.

  • -[no]alarmDisplay
    [do not] enable alarm messages. iCal has a way to do 'pop-up' alarms. Use this option to enable 'alarmed' events to do the pop-up thing.

  • -[no]alarmSound
    [do not] enable alarm sounds. iCal has a way to do 'audible' alarms. Use this option to enable 'alarmed' events to do the audible thing.

  • -[no]verbose
    [do not] be verbose. Prints more messages when running. Logo is kind enough to house this current project.

Copyright © 2003 Patrick Mueller

Last updated on 2005/10/06 at 20:16.