
=======
kvigall
=======

kvigall is a calendar program capable of showing calendars created
from scripts that you create. If there's a site that you often check
for upcoming events, you can create a script that crawls and parses
this site. By converting your resulted data into a format
understandable by kvigall, you can then view the info in a calendar.

kvigall currently has two calendars:

* one using curses (default)
* one just printing to the terminal (called 'text')

kvigall caches events to make loading faster and easier. This also
makes it possible to read events from a script that depends on a
connection to the internet even if there is no connection.

License
=======

kvigall is free software under the terms of the GNU General Public
License version 3 (or any later version). The author of kvigall is
Niels Serup, contactable at ns@metanohi.org. This is version 0.1.0 of
the program.

External libraries included with kvigall are GPL-compatible.

Installing
==========

Way #1
------
Just run this (requires that you have python-setuptools installed)::

  $ sudo easy_install kvigall

Way #2
------
Get the newest version of kvigall at
http://metanohi.org/projects/kvigall/ or at
http://pypi.python.org/pypi/kvigall

Extract the downloaded file and run this in a terminal::

  $ sudo python setup.py install

Dependencies
============
Python 2.5+ is probably a requirement.

Optional extras
---------------
If present, kvigall will use these Python modules:

``qvikconfig``
 + Web address: http://pypi.python.org/pypi/qvikconfig/
 + License: GPLv3+
 + Installing: ``$ sudo easy_install qvikconfig``
 + Author: Niels Serup

``termcolor``
 + Web address: http://pypi.python.org/pypi/termcolor/
 + License: GPLv3+
 + Installing: ``$ sudo easy_install termcolor``
 + Author: Konstantin Lepa <konstantin lepa at gmail com>

``htmlentitiesdecode``
 + Web address: http://pypi.python.org/pypi/htmlentitiesdecode/
 + License: WTFPL 2.0+
 + Installing: ``$ sudo easy_install htmlentitiesdecode``
 + Author: Niels Serup

(Copies of ``qvikconfig``, ``termcolor`` and ``htmlentitiesdecode``
are included in the kvigall distribution, so you'll be fine without
downloading them yourselves.)

``setproctitle``
 + Web address: http://pypi.python.org/pypi/setproctitle/
 + License: New BSD License
 + Installing: ``$ sudo easy_install setproctitle``
 + Author: Daniele Varrazzo <daniele varrazzo at gmail com>


Using
=====

To use kvigall after installation, run ``kvigall``. To get an
impression of its options, run ``kvigall --help``.

kvigall works by using mods. These mods are ordinary Python
programs. Every mod must have a ``Connector`` class with a
``get_kvigall_events`` function returning a list of kvigall events (by
importing ``Event`` from ``kvigall.various``). If you create a script
called ``simple_mod.py`` and place it in your scripts directory
($HOME/.kvigall by default), you can call it from kvigall by running
``kvigall simple_mod``.

This distribution includes a basic ``simple_mod.py``, which can be
used as a base when developing new mods. Other mods are available on
the internet; see http://metanohi.org/projects/kvigall/mods/ for a
list of some of the downloadable and usable mods in existence.

kvigall can use config files instead of just command line options. All
of these options can be overridden on the command line. It is possible
to have several config files, using different ones for different
purposes. Run ``kvigall --help`` for available config file options and
their equivalent command line options. A config file might look like
this::

    default scripts = simple_mod # Using simple_mod.py
    frontend = curses:navigate # Use the default frontend, but make it
                               # begin in navigate-mode instead of command-mode
    #frontend = text # I want the plain text frontend
    #styling = false # *really* plain text
    date format = '%A, %m/%d-%Y' # e.g. Friday, 08/27-2010
    start date = ++0 # If today has no events, search for an eventful date
                     # in the future
    #update after = 1d # I want a longer-lasting cache
    #start date = 2010, 01, 01 # instead of today
    #start empty = true # nah, don't show anything at startup
    #verbose = false # I hate errors, don't print 'em
    #color errors = false # no colored errors

Your main config file should be called "kvigall.config" and saved in
the same directory as your scripts. All text after the '#' character
is comment-matter.

Built-in frontends
------------------

kvigall comes with two frontends: a text-based one and a curses-based
one. To get an impression on how these frontends work, enter "help"
when running either of them. This command will display a help message.


Developing
==========

kvigall is written in Python and uses Git for branches. To get the
latest branch, get it from gitorious.org like this::

  $ git clone git://gitorious.org/kvigall/kvigall.git

A number of kvigall mods can be fetched using git as well::

  $ git clone git://gitorious.org/kvigall/kvigall-mods.git


The future/TODOs
================

This is an incomplete list of what isn't perfect yet.

* The current way of saving caches is crude. It uses too many
  files and should be improved.
* There is no support for user-created frontends. This should be
  fixed.


The logo
========
The logo of kvigall, found in the "logo" directory, is available
under the terms of the Creative Commons Attribution-ShareAlike 3.0 (or
any later version) Unported license. A copy of this license is
available at http://creativecommons.org/licenses/by-sa/3.0/


This document
=============
Copyright (C) 2010  Niels Serup

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without any warranty.
