GNOME Dashboard

Nat Friedman <nat@nat.org>

Usefulness
----------

The dashboard is not useful right now; you should only be looking at
it if you suffer from morbid curiosity or if you want to help out.
Don't expect it to do anything practical for you.

Frontend Applications
---------------------

Applications are starting to appear which act as Dashboard frontends
out of the box.

They are:

	- Straw, an RSS aggregator in Python
		 http://www.nongnu.org/straw/

	- Epiphany, the GNOME web browser, CVS version
		http://www.gnome.org/projects/epiphany/

	- RhythmBox, the GStreamer-based music player
		http://rhythmbox.org/

Applications with plugins and patches available elsewhere can be found
in the frontends/ directory.

Indexer Notes
-------------

The indexer requires SQLite.  And you need to make sure your mono
distribution is cool with SQLite.  Specifically you need to have
Mono.Data.SqliteClient.dll.

  * To download SQLite:

      http://www.sqlite.org

  * To find out about integrating SQLite into Mono

      http://www.go-mono.com/sqlite.html


Before you run dashboard you need to create an index.  Run the
text-indexer program to build your file index.   Here is an example:

  % text-indexer -i `find ~/Documents -iname "*.txt"`

You can run this command multiple times without corrupting the
existing index.

  * Current Deficiencies

    - Will not automatically index, the command-line client must be run.
    - Will most likely spaz out most non-triumphantly on non-plain text files
    - Will staunchly (if not dirtily) refuse to reindex the same file

  * see also index/README

If you want to customise the list of custom words you can install
$prefix/lib/dashboard/text-index/custom_words.txt into
~/.dashboard/backend-data/text-index/custom_words.txt and modify to your
hearts content.

Resources
---------

  * We have a mailing list see
      http://mail.gnome.org/mailman/listinfo/dashboard-hackers
    Your subscription requires approval from the list admin, but the
    archives are publicly viewable.

  * We do have a blog: http://nat.org/dashboard
    RSS is at:         http://nat.org/rssdash.xml

Directories and Files
---------------------

  ./build-applications.sh

      This is a little tool that is supposed to make it easy to
      build all the applications that we patch.  I just wrote it, no
      idea if it's going to work for people or not, I haven't tested
      it since my network is fucked.

  index/ 

      The Dashboard indexer, which is just getting started.

  engine/

      - The main dashboard process.

      - The shared classes.

      - Some handy GNOME bindings.

  backends/ 

      The pluggable backends, which get fed clues as they come
      in, and usually find matches and new clues.

  renderers/

      The pluggable renderers, which know how to draw matches.

  frontends/ 

      A collection of patches and plugins for desktop applications.
      Cluepacket sending classes for Python, Perl and Java.  C- and
      C#-based standalone cluepacket sending tools.

      Some programs either already have support for Dashboard, or have
      patches/plugins available elsewhere.  They are mentioned below.

  patches/

      These are patches that need to be applied to various
      applications so that the dashboard can work.  These are not
      cluepacket-sending frontend patches; those go in frontends/.

  doc/ 

      A bunch of dangerous, out-of-date documentation.

Coding Conventions
------------------

  - We primarily use the MCS coding conventions, which can be found in
    mcs/class/README in the Mono CVS repository.

  - If your constructor sets self-local variables, do it like this:

		Constructor (int member)
		{
			this.member = member;
		}

  - All public class members should be in StudlyCaps.

  - Never use javaCapitalization.

Graphing
--------

To enable the Graph button in the Dashboard panel it is necessary to
have both graphviz and gthumb installed.

