2024-02-28 Use of a calendar

In the last millennium, I used the Emacs Diary for my calendar. I mean, why not? The Emacs Calendar is great. Better than the `cal` command-line utility, in any case. But eventually the world got mobile phones and I wanted an online calendar.

Emacs Diary

Emacs Calendar

The example from the Emacs Diary documentation:

12/22/2015  Twentieth wedding anniversary!
10/22       Ruth's birthday.

Tuesday--weekly meeting with grad students at 10am
         Supowit, Shen, Bitner, and Kapoor to attend.
1/13/89     Friday the thirteenth!!
thu 4pm     squash game with Lloyd.
mar 16      Dad's birthday
April 15, 2016 Income tax due.

Back then, Google didn't want to be evil and I used Google Calendar. When Google changed its mind, so did I. I switched to Radicale.

Radicale

And yet, I sort of missed those diary file entries.

Today, @tadzik@social.tadzik.net posted a link to caleb.

caleb

`caleb` will do its best to interpret a calendar event description, create a valid iCalendar event for it and optionally upload it to a CalDAV server.

Nice!

Example usage, from the README:

$ caleb friday 5pm beer

My main problem was that it took me a while to figure out what the correct CalDAV URL is. I looked into my iPhone accounts (my first mistake) and tried `https://example.org/radicale/alex`, then `https://example.org/radicale/alex/`, then `https://example.org/radicale/alex/Alex` – some of these URLs failed silently, some of them created new collections with the iCalendar filename as the collection name… and I didn't get an warnings or error messages. I mean, it makes sense. It's like a filesystem, you can save whatever you want. But it's not what the calendar apps expect.

CalDAV

iCalendar

So, how do I discover the correct URL? Using a command-line WebDAV explorer like `cadaver`. The following example shows how I log into Radicale and list the contents of the two directory I found. One of them is full of `.vcf` files (contacts), the other is full of `.ics` files (calendar entries). That's the one!

WebDAV

~/src/caleb $ cadaver https://example.org/radicale/alex/ Authentication required for Radicale - Password Required on server `example.org': Username: alex Password: *secret* dav:/radicale/alex/> ls Listing collection `/radicale/alex/': succeeded. Coll: 6304bd43-5d45-208b-0e44-893e509cf3da 1239216 Feb 7 08:13 Coll: cae8e041-61d9-b51a-57db-294b07e8dc1e 520978 Feb 28 11:43 dav:/radicale/alex/> ls 6304bd43-5d45-208b-0e44-893e509cf3da Listing collection `/radicale/alex/6304bd43-5d45-208b-0e44-893e509cf3da/': succeeded. 0008345A-1EFB-4FC2-9545-BB1D7B2EE6E0.vcf 295 Jun 19 2020 000ED281-A0C8-46F2-B3EB-1D13E4224281.vcf 241 Feb 25 2023 007A5E7D-8947-4FC1-95B5-BBADEA9E27DC.vcf 267 Jul 14 2023 ... dav:/radicale/alex/> ls cae8e041-61d9-b51a-57db-294b07e8dc1e Listing collection `/radicale/alex/cae8e041-61d9-b51a-57db-294b07e8dc1e/': succeeded. 00A3A923-47C0-4BE4-B2BF-E365965C3975.ics 1043 May 29 2022 011F4EF6-B431-4531-BB3D-D1E45BD665AB.ics 1266 Sep 10 00:19 02909CE2-D363-436B-858D-3A243A10693E.ics 962 Jun 9 2023 ...

Now I'm finally ready to go back to `caleb` and create the config file, `~/.config/caleb.conf`:

[caldav]
url = "https://example.org/radicale/alex/cae8e041-61d9-b51a-57db-294b07e8dc1e"
username = "alex"
password = "*secret*"

Enjoy!

​#Administration ​#Caleb ​#CalDAV ​#WebDAV

Remind is a sophisticated calendar and alarm program. – Remind

Remind