Package Name: tigerlily-1.0.4
Package Type: textual/chat
Package Home: /afs/rpi.edu/dept/acm/packages/tigerlily/1.0.4
Maintainer: Steve Czetty (czetts@rpi.edu)
For questions regarding this package, please send e-mail to czetts@rpi.edu (Steve Czetty).

The following info is available:

TigerLily
=========

Installing
----------
TigerLily requires Perl 5.  You will also need either Curses.pm or
Term::Cap.pm, as well as Term::Size.pm -- see the Terminals section for
details.

To create a usable tlily executable, run the command:
   perl Build.PL
To see the full usage for Build.PL, run the command:
   perl Build.PL -h


Terminals
---------
At this time, tlily has two Terminal implementations: CTerminal and
TTerminal.  CTerminal requires a working Curses module, and Term::Size.
TTerminal requires the Term::Cap module.

TTerminal lacks support for color and special keys (notably, the arrow
keys).  (The keys ^F, ^B, ^P, ^N are equivalent to right/left/up/down.)

CTerminal supports color when used with an appropriate curses and terminal.
I recommend ncurses and rxvt.  Please note that curses color handling is
atrocious at best, and unspeakable at worst -- any color problems you
experience are probably the fault of your curses.

The default terminal module is CTerminal.  You may permanently change
this by setting the $terminal configuration file option to 'LC::TTerminal'.
You may temporarily switch between the two from within tlily with
'%terminal LC::CTerminal' and '%terminal LC::TTerminal'.  (%terminal alone
will display the currently used terminal.)


Colors
------

Color preferences are specified in the config files(See 'Configuration'
below).  To change a color, set that color preference in your site or
user configuration files.  Color preferences are in %color_attrs, and
monochrome preferences are in %mono_attrs.

Example:  To make the header on private messages red on white instead of
green on black, add the following to your config file:

    %color_attrs = ('pubhdr' => [ 'fg:red', 'bg:white' ]);


/-command Overrides
-------------------

Tigerlily includes 3 client-side fixes/enhancements for existing lily
commmands, implemented by intercepting the command before it is sent
to the server:

/info		Enhanced so that /info set and /info edit bring up your
		editor for you to change your info.

/oops		Fixed so as to reset your sendlist correctly for ;-expansion

/also		Fixed so as to append the /also'ed people to your sendlist
		for ;-expansion.

To allow any of these overrides, put the command without the / in the
@slash variable in your site or user configuration files.

Example: To enable the /info override, add the following to your 
	 user or site config files:

@slash = ('info');

To disallow an override, put the command without the / and with a leading
'-' in the @slash variable in your site or user configuration files.

Example: To disable the /also override, add the following to your 
	 user or site config files:

@slash = ('-also');

Being concious not to override the existing behavior of lily commands, the
current default is to not override any /-commands.

There are those among the developers that want to change this default,
though, and so this default may change.


Configuration (Needs expanding)
-------------

TigerLily now has 4 levels of customization:
    Level    Default File Location
             Description
    -----    ---------------------
    Global   /usr/local/lib/tlily/tlily.cf
             Default settings for all features; please no not edit except
             when developing to add defaults for new settings.
    Site     /usr/local/etc/tlily.cf
             Site-specific settings to augment or override the global
             settings.  System Administrators wishing to change the
             default settings for their users should edit this file.
    User     ~/.lily/tlily/tlily.cf
             User-specific settings to override the global and site
             settings.
    Command  
             Many(not all) configuration options can be overridden at the
             command line.

Here is a summary of the common configuration file(CF) options:

@load
	Setting this variable in a CF will change the list of
	extensions to load.  An extension preceeded by a - will
	cause that extension to not be loaded.  
	    # Example:
	    @load = ('a', 'b', '-c', 'd', '-e');
	    # In addition to the current extension list, extensions a, b,
	    # and d will be loaded, and extensions c and e will not be loaded.
	The default extension list is in the global CF, and can be
	changed using this method in the site and/or user CFs.

$terminal
        This variable controls the default terminal implementation to use.
        Valid settings are 'LC::CTerminal' and 'LC::TTerminal'.

%color_attrs
%mono_attrs
	Setting these variables in a cf will change the color settings
	for the color and monochrome mode of an element.
	    # Example:
	    %color_attrs = ('pubhdr' =>  ['bg:blue', 'fg:red', 'bold'],
	                    'privmsg' => ['fg:cyan', 'bg:green']);
	    # Make all public message headers red on blue and bold, and
	    # make all private messages green on cyan.  The color attributes
	    # for other elements will be unchanged.
	    %mono_attrs = ('pubmsg' => ['reverse'],
			   'statusline' => ['bold']);
            # Make all public messages be in reverse video (black on white),
            # and make the statusline be normal(white on black) with the text
            # in bold.  The monochrome attributes for other elements will be
            # unchanged.

@slash
	Setting this variable will change the list of /-commands that are
	allowed to be intercepted by tlily and other extensions in order
	to add functionality to an existing command.  Any extension wanting
	to intercept a /-command must honor their desired command's
	existence/non-existence in this list.  Adding a /-command to this
	list will not necessarily enable interception of the /-command;
	the extension that wants to intercept it must be loaded also.
	    # Example:
	    @slash = ('-info', 'also', 'oops');
	    # In addition to the slash list from previous CF levels,
	    # allow /also and /oops to be intercepted, but do not
	    # allow /info to be overridden.
	By default, no slash commands will be allowed to be intercepted.  This
	can be overridden in the site and/or user CFs using this method.

$emote_oops
        If set, this specifies an oops string to use for emote discussions.
        The standard lily /oops will still be used for connect discs.  Note
        that this only effects %oops -- you will need to add oops to @slash
        to change /oops.

@prefer
        This variable contains a list of destinations to "prefer" when
        doing autoexpansion.  If a partial destination is a prefix to
        an element in this list, it will always be expanded to it.
        Examples:
          @prefer = ('-security');
          The "security" discussion exists, as does the user "Secret Agent".
          "sec" will expand to "-security".

          @prefer = ('damien_clone');
          The users "damien" and "damien clone" both exist.
          "dam" will expand to "damien_clone".  "damien" exactly matches
          a user, and will not expand.
	
Extensions can each have options to configure them; see the documentation
for the specific module to see what options can be set.


CVS access
----------
The TigerLily sources are stored in a CVS repository.  Anyone working on
TigerLily development can get access by contacting Damien (neild@acm.rpi.edu)
or Albert (albert@acm.rpi.edu).

The repository is currently located on einstein.to.

To access the repository remotely, you will need to set two environment
variables:
  export CVSROOT=:ext:neild@einstein.to:/usr/src/cvs
  export CVS_RSH=ssh

Obviously, replace the `neild' with your own userid on einstein.to.  CVS_RSH
need not necessarily be ssh, but this is likely to be the simplest method to
use.

The important CVS commands are:
  - cvs checkout tlily
    This will grab a copy of the current source tree, and place it in a
    new directory named `tlily'.  No locking is implied by this operation;
    you may delete the checked out tree without ill effect.

All other CVS commands accept a list of files as an argument; in the absence
of this list, they operate on the current directory.

  - cvs update
    Compares a checked out tree to the current sources, merging down any
    changed files from the repository.  Changes you make will not be added
    to the repository until you do a cvs commit.

  - cvs add
    Registers a new file into the repository.  The file will be visible to
    others after you cvs commit.

  - cvs remove
    Removes a file from the repository.  The file will disappear to others
    after you cvs commit.

  - cvs commit
    Checks in all changes in the current tree.

Read the CVS manpages for more detailed information.

The following man pages were found: