fuss - An extensible customisable program to create HTML slideshows.


fuss filename


fuss (short for --funroll-slideshow) is a highly customisable program designed to create slide shows. Anyone who's tried to write an HTML slide show from scratch knows how tedius the task can be (especially if one has a large collection of images). fuss simplifies matters as follows.

  1. You write a CONFIG FILE for fuss, with the list of images, captions or whatever else you choose to include.

  2. You write one or more ``Templates'' for your slide show in any markup language. (You can just use the default Theme [see THEMES] if you like).

That's it. fuss does the rest. fuss has a collection of MODULES (which in reality are just Perl Modules) which are executed from the CONFIG FILE. The module funroll::Page(1) substitutes the filenames / captions specified in the config file, and generates a html file (generally your slideshow or index files). It understands basic loop control and flow statements, so you can control the output to your taste. It also provides the option to filter the output through a preprocesser (like php for instance).

The module funroll::Resize(1) resizes and or rotates your images, and the module funroll::Directory(1) can be used to recurse folders. See the section on MODULES for a complete list and description. See also the section on THEMES, which are a collection of config files, templates, stylesheets and icons designed to create a complete slideshow.

Finally, if you're interested in extending fuss you should read the source :). I've not got around to documenting the interface yet, but will soon. If you write a perl module which might be usefull to others then send it to me for inclusion with fuss.


fuss begins by reading the config file specified on the command line, and exits after processing it. A CONFIG FILE is used to define tokens (like a title), options, lists (like a list of images), shared files (like icons or stylesheets) and to execute actions (MODULES) like creating HTML sources for your slide show, or resizing images.


Blank lines, and lines beginning with a # are treated as comments (and ignored). Leading spaces are ignored, so indent as you like. Lines ending with a ``\'' are treated as continuing onto the next line.

option [default] name = value
Sets the option name to value. value is treated as a literal string, so please don't quote it (unless you want the quotes to be part of value). Options are used differently by each module, so see the section on MODULES for a list of options and descriptions.

If the keyword default is present, then the value of name is set only if it has not previously been set or unset. If value is undef then the option name is undefined, and it's existence forgotten. You can use this to unset an option.

token [default] name = value
Behaves exactly like the option command, except it sets a ``token'' instead. Tokens are used differently by each module, so see the section on MODULES for details.

shared [default] filename [prop1=val1] [prop2=val2] [...]
shared_file [default] filename [prop1=val1] [prop2=val2] [...]
Defines a shared file filename. If specified, each shared file has the attributes attr1, attr2, ... associated to it (with values val1, val2, ...). If a name attribute is not specified, then it is defined by default, and has the value filename. If the keyword default is present, then attributes are set only if they are not previously defined (or undefined).

A shared file is exactly what the name suggests. For instance, a stylesheet or icon could be a shared file. Each module has a different action for shared files, so see the section on MODULES for an explanation of what the module does to shared files, and a list of attributes. In general, shared files will either be ignored, or copied to the appropriate shared directory.

list listname fields=(field1 [,field2...]) {
value1 [: value2 [:...]]
Defines a list called listname. Each line between the braces ``{'' and ``}'' is an item in this list. Each item in this list has fields (or attributes) named field1, field2... with values value1, value2... . If a value contains a ``:'', then precede it with a backslash.

Each module handles lists differently. Different templates, modules or themes might require specially named lists. See the section on MODULES and THEMES.

The lines line1, line2, ... are processed as a CONFIG FILE. When a line containing the identifier ENDWORD alone is found, all operations done in line1, line2, ... are forgotten, and processing of the config file resumes as it were before it encountered the local statement.

include filename
Reads the config file filename, and then continues with the current file (just like #include in C). fuss first searches for filename as follows:
  1. If filename begins with ``='', then fuss looks for the file in fuss's base directory (the directory containing the base executable, with all symlinks resolved).

  2. The filename ``+filename'' is equivalent to ``=include/filename''.

  3. If the file beginns with either a ``.'' or a ``/'', then the file treated as relative to the current directory, or an absolute path (respectively).

  4. Otherwise fuss looks for filename in the same directory as the config file currently bieng processed.

do filename
Equivalent to:
    local EOF
        include filename

funroll ModName
This passes all the lists, options, tokens, and shared files to the module ModName. Each module does something different. See the section on MODULES for a list of modules, and a description of what they do.


fuss has a collection of Modules, each of which serve a specific purpose. Modules are executed from the CONFIG FILE using the ``funroll'' command. Each module has it's own man page. The modules currently shipped with fuss are:

Creates the source (HTML / PHP / etc) for your slide show.

Resizes and or rotates your images.

Recurses directories.


In reality a ``Theme'' is nothing but a collection of CONFIG FILES and ``Templates'', which create a complete slide show. Using themes is easy. First create a CONFIG FILE and define your images, captions, titles, descriptions and other options. At the end of your config file, just call the theme file with ``do +Theme.fuss''. That's it.

Currently there is only one theme fussTheme::Simple(1). Hopefully someone (you) will write more :). If you do, and you think it looks good, send it to me for inclusion with fuss.

See the man page funroll::Simple(1) for a description and list of options of the ``Simple'' theme.


The following config file recurses the current directory and creates a slide show:

    # When hosting your pictures online, upload both the following
    # directories to your webserver.
    option output_dir     = /tmp/upload/pictures/
    option shared_outdir  = /tmp/upload/shared/
    # When hosting your pictures online, change the token below to
    # point to the location of the shared_outdir above. If left
    # unchanged, the html files generated will be suitable for
    # viewing only on your local computer.
    token  shared_prefix  = /tmp/upload/shared/
    # Set the title subtitle and contat info as desired. (HTML can
    # be used here).
    token  title          = My Fantastic Pictures
    token  subtitle       = June 11<sup>th</sup>, 2004
    token  contact_info   = Deeds Drumhill &lt;\
        <a href=""></a>&gt;
    # Create the slideshow
    funroll Directory

The following config file creates a slide show with captions for specified files.

    option output_dir     = /tmp/upload/pictures/
    # If you'd like shared files from all slideshows you create to go
    # in the same directory, then uncomment the following lines.
    # Before hosting your files online, be sure to change the token
    # shared_prefix to point to the location of your shared files
    # option shared_outdir  = /tmp/upload/shared
    # token  shared_prefix  = /tmp/upload/shared
    # Set the title subtitle and contat info as desired.
    # (HTML can be used here).
    token  title          = My Fantastic Pictures
    token  subtitle       = June 11<sup>th</sup>, 2004
    token  contact_info   = Deeds Drumhill &lt;\
        <a href=""></a>&gt;
    # Define captions for your images
    list        files fields=(filename, caption) {
        image1.jpg      : Caption for image1.jpg
        image2.jpg      : Caption for image2.jpg
        image3.jpg      : Caption for image3.jpg
        image4.jpg      : Caption for image4.jpg
    # Specify the directory containing your images.
    option image_indir    = ./
    # Create the slideshow
    do +Simple/Create.fuss


This program, and all files distributed with it are protected under the GNU General Programers Licence version 2 or later. See the file Licence for details.


fuss(1), perl(1), funroll::Page(1), funroll::Resize(1), funroll::Directory(1), funroll::Simple(1).


Gautam Iyer <>.