perl client for the lily chat server
Perl Prolog
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


#    TigerLily:  A client for the lily CMC, written in Perl.
#    Copyright (C) 1999-2011  The TigerLily Team, <>
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License version 2, as published
#  by the Free Software Foundation; see the included file COPYING.

      . . `; -._    )-;-,_`)          TigerLily 2.x
     (v_,)'  _  )`-.  ``-'             "Feel Free"
    _.- _..-_/ / ((.'
  ((,.-'   ((,/ 


TigerLily requires Perl 5.6.1 or greater.  You will also need or Term::Readline::Gnu. (from CPAN)

You can run tlily directly from the source directory, by running
"perl tlily.PL".

To create an assortment of single file versions of tlily, run:

perl Makefile.PL

Pick the .plx you want to use (depends on the UI you wish to use, it's part
of the file name), and copy it wherever you wish.

To do a standard installation:

perl Makefile.PL
make install

And "tlily" will be installed in the directory you specify during the first


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 = ('public_header' => [qw(red     white   normal)]);

/-command Overrides

Tigerlily includes several 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.

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

/blurb          Enhanced so that /blurb will squeeze your requested blurb
                into the space available.

/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
    -----    ---------------------
    Global   /usr/local/lib/tlily/
             Default settings for all features; please no not edit except
             when developing to add defaults for new settings.
    Site     /usr/local/etc/
             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/
             User-specific settings to override the global and site
    Command  <no file>
             Many(not all) configuration options can be overridden at the
             command line.

The format for these .cf files is

[$@%]<config_var> = <value> ;

So, to set your browser to lynx, you'd add the following lines to 


Note that in an interactive session, this would be accomplished with:

%set browser lynx

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

	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.

	Setting elements of these hashes in a cf will change the color
	settings for the color and monochrome mode of an element.

	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.

        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.

        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.
          @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.
        Set %bindings to install global key bindings.  For example:
                %bindings = { 'M-g' => 'look' };
                $bindings{'M-g'} = 'look';
        will both set the M-g key to do the "look" function, which
        provides a simple lookup mechanism to the Unix "words" file.
        (Note that the look function is bound to C-g by default, and
        %bindings does not change that.)  Bindings set this way will
        be available before you are even connected to the server,
        which can't be accomplished by using %bind in a Startup file/memo.

Extensions can each have options to configure them; see the documentation
for the specific module to see what options can be set.

git access
The TigerLily sources are stored on github, at

For more information on git and github, see: