DesktopNova
===========

DesktopNova is a program, that can change your desktop wallpaper automatically
in a given time interval and/or at the program's start. It chooses the images
from single files and/or from folders (incl. subfolders if you wish).
You can determine whether the program should start when you log in or not.
This program works currently only on a Gnome or Xfce based distribution like a
base installation of Debian or Ubuntu.

License
-------
See COPYING in the root of the source tree.

Installation
------------
For installation instructions, see the file named INSTALL in the root of the
source tree.
You will need at least a c compiler, make, cmake and different
libraries like gtk+, glib, gconf and dbus-glib installed to build.

From a base Debian (or Ubuntu) Linux installation, you can get everthing you
need by installing the following packages:
    - gcc
    - make
    - cmake
    - python2.6
    - libglib2.0-dev
    - libgconf2-dev
    - libgtk2.0-dev
    - libxml2-dev
    - libdbus-glib-1-dev

For other Linux distributions, the package names will probably be slightly
different, but the list should be fairly similar.

Modules And Other Selectable Features
-------------------------------------
You can select, which modules you want to compile and install.
By default -ALL- module will be compiled.
At the moment the following modules are availaible:
    - Gnome-module
    - Xfce-module
    - newer Xfce-module, which uses Xfconf (available since Xfce 4.6)

There also some other optional features:
    -  file list cache
       THIS FEATURE IS AT THE MOMENT ONLY EXPERIMENTAL!

    - tray icon
      For this feature you need to activate D-Bus support.

You can select the features you want by setting some cmake variables. The value
of these variables should be either "ON" or "OFF" (without quotes).

Here is a list of the most useful variables:
    - ENABLE_DBUS
    - ENABLE_MAIN
    - ENABLE_MODULE_GNOME
    - ENABLE_MODULE_XFCE
    - ENABLE_MODULE_XFCE_XFCONF
    - ENABLE_NLS
    - ENABLE_TRAY

For detailed instructions, see the file named INSTALL in the root of the
source tree.

Module Development
------------------
*** [ THIS SECTION IS OUTDATED! ] ***

Here is a list of all functions, that will be invoked by the main programs.
Some of the functions are necessary and some are optional.

    const gchar * module_gw_version(void);
        ->  necessary
        Should return the version of the DesktopNova-version the module is for.

    const gchar * module_get_name(void);
        ->  necessary
        Should return the name of the module.

    const gchar * module_get_version(void);
        ->  necessary
        Should return the version of the *module*.

    const gchar * module_get_author(void);
        ->  necessary
        Should return the name of the author who wrotes the module.

    const gchar * module_get_homepage(void);
        ->  necessary
        Should return the URL of the homepage of the module.

    const gchar * module_get_description(void);
        ->  necessary
        Should return a longer description of the module.

    void change_wallpaper(const gchar * filename);
        ->  necessary
        Here the module should change the wallpaper to filename.

    void module_init(void)
        ->  optional
        Here the module can do initial things (e.g bind textdomain, etc.).

    void hook_list_files(const GPtrArray * files);
        ->  optional
        Here the module can get a list of all wallpaper-files.
        This functions is invoked after the daemon has scanned all directories.

Source From Bazaar Branch
--------------------------
You can get the latest source code with Bazaar. Use this command to copy the
branch to desktopnova/ in the current directory.
(This command fetches the current trunk-branch. If you are looking for another
branch you should visit https://code.launchpad.net/desktopnova)

    bzr branch lp:desktopnova desktopnova


Invoking the localbuild Script
------------------------------
With the ./localbuild script you will be able to build DesktopNova in the
build/-subdirectory and install it to build/install/.
The script has different modi:

    without parameter:            display usage
    parameter "build"             complete build (with clean)
    parameter "build-verbose"    like build, but verbose
    parameter "rebuild":          rebuild (without clean)
    parameter "clean":            remove build/

To clean the source tree you must only remove the directory called build/.

Contact
-------
If you have a question or you found a bug, feel free to contact me.

Stefan Haller <haliner@googlemail.com>
