aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 3bf535db5ca0506b9a71a8a13197dd8e2aed45b9 (plain)
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
			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)
- 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