Published 21 Apr 2025.
Tags: projects.
Caledonia is a calendar
client with command-line and Emacs front-ends. It operates on a vdir directory of .ics files as
managed by tools like vdirsyncer, which
allows it to interact with CalDAV servers. The command-line has the
list
, search
, show
,
add
, delete
,
and edit
subcommands, and has full
timezone support.
An example list
invocation is,
$ caled list
personal 2025-04-04 Fri 13:00 - 14:00 (America/New_York) New York 8am meeting 054bb346-b24f-49f4-80ab-fcb6040c19a7
family 2025-04-06 Sun 21:00 - 22:00 (UTC) Family chat @Video call 3B84B125-6EFC-4E1C-B35A-97EFCA61110E
work 2025-04-09 Wed 15:00 - 16:00 (Europe/London) Weekly Meeting 4adcb98dfc1848601e38c2ea55edf71fab786c674d7b72d4c263053b23560a8d
personal 2025-04-10 Thu 11:00 - 12:00 (UTC) Dentist ccef66cd4d1e87ae7319097f027f8322de67f758
family 2025-04-13 Sun 21:00 - 22:00 (UTC) Family chat @Video call 3B84B125-6EFC-4E1C-B35A-97EFCA61110E
personal 2025-04-15 Tue - 2025-04-17 Thu John Doe in town 33cf18ec-90d3-40f8-8335-f338fbdb395b
personal 2025-04-15 Tue 21:00 - 21:30 (UTC) Grandma call 8601c255-65fc-4bc9-baa9-465dd7b4cd7d
work 2025-04-16 Wed 15:00 - 16:00 (Europe/London) Weekly Meeting 4adcb98dfc1848601e38c2ea55edf71fab786c674d7b72d4c263053b23560a8d
personal 2025-04-19 Sat Jane Doe's birthday 7hm4laoadevr1ene8o876f2576@google.com
family 2025-04-20 Sun 21:00 - 22:00 (UTC) Family chat @Video call 3B84B125-6EFC-4E1C-B35A-97EFCA61110E
personal 2025-04-22 Tue 21:00 - 21:30 (UTC) Grandma call 8601c255-65fc-4bc9-baa9-465dd7b4cd7d
work 2025-04-23 Wed 15:00 - 16:00 (Europe/London) Weekly Meeting 4adcb98dfc1848601e38c2ea55edf71fab786c674d7b72d4c263053b23560a8d
family 2025-04-27 Sun 21:00 - 22:00 (UTC) Family chat @Video call 3B84B125-6EFC-4E1C-B35A-97EFCA61110E
personal 2025-04-29 Tue 21:00 - 21:30 (UTC) Grandma call 8601c255-65fc-4bc9-baa9-465dd7b4cd7d
work 2025-04-30 Wed 15:00 - 16:00 (Europe/London) Weekly Meeting 4adcb98dfc1848601e38c2ea55edf71fab786c674d7b72d4c263053b23560a8d
The Emacs client communicates with caled server
using a S-expression based
protocol.
§Installation
With opam,
$ git clone https://tangled.sh/@ryan.freumh.org/caledonia
$ opam install ./caledonia
With Nix,
$ nix shell 'git+https://tangled.sh/@ryan.freumh.org/caledonia?ref=main'
§Configuration
Caledonia looks for calendars in the directory specified by the `CALENDAR_DIR` environment variable or in `~/.calendars/` by default.
§Thanks
To Patrick for suggesting the name, and all the developers of the dependencies used, especially icalendar and timere.