1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
CALP
Hugo Hörnquist
2020-08-03
Calp is primarily a program for loading calendar files (.ics's) from
drendering them in different formats. The goal is however to also
support fancy filtering, an edit server, and more. The currently
working frontends is the HTML-frontend, which have the two main
modes of a month-by-month in "week" view, or a table of a single
month, and the terminal frontend. The terminatend is mostly for
debugging purposes, but it's quite usable still.
Configuration is set in ~/.config/calp/config.scm. Set at least
calendar-files with something like:
(set-config! 'calendar-files (glob "~/calendars/*")).
Both single calendar files, and vdir's are supported, see vdirsyncer
and ikhal. Then run
./main --help
to see how to start the different modes.
Contributing
------------
Easiest is to open issues at https://github.com/HugoNikanor/calp.
But patches and the like can also be mailed to <hugo@lysator.liu.se>
Requirements & Dependencies
---------------------------
For basic functionallity guile-2.2 or greater should be enough
(tested to work with guile-3.0). You do however need to supply your
own calendar files. I recommend vdirsyncer for fetching local copies
from all over the internet.
The zoneinfo data [TZ] is in the public domain [TZLIC].
Standards and specifications
----------------------------
- RFC 5545 (iCalendar)
- RFC 6321 (xCal)
- RFC 7265 (jCal)
- Vdir Storage Format [VDIR]
Building
--------
./configure
./main
No explicit compilation is required for general usage, since Guile
compiles
files as they are needed. You do however have to run `./configure`
before the first startup to set up some local variables and download
the timezone db.
To actually compile the files, and render the documentation (at the
time of writing only the README), run
make all
Techical Details
----------------
- Internally all weeks start on sunday, which is repsenented as `0'.
== The configuration system ==
For all user provided variables a purpose built configuration system
is used. Thee module `(util config)` exposes the bindings
`define-config` along with `set-config` and `get-config`. The idea
behind this, instead of direct variables, is to make it clearer what
is part of the configurable environment, it allows a set! before the
point of definition, and it makes values constraints easier to
manage.
References
----------
[TZ] https://github.com/eggert/tz
[TZLIC] https://github.com/eggert/tz/blob/master/LICENSE
[VDIR] http://vdirsyncer.pimutils.org/en/latest/vdir.html
|