tf man page

tf — TinyFugue, a MUD client


tf [-ffile] [-lnq] [world]
tf [-ffile] host port


TinyFugue (also known as "Fugue" or "TF") is a line-based client designed for connecting to MUD servers (note: LP, DIKU, and other servers which use prompts require "/lp on"; see /help prompts).

Most of the TF documentation is in the help file, which may be read online with the "/help" command. This manual page may be obsolete in certain areas; however, the helpfile will always be up to date.

TinyFugue is larger than most MUD clients, but has many more features and is much more flexible. The goal is to provide the most functionality in a client that still maintains the user-friendliness of Tinytalk. Clients with extension languages such as Tcltt or VaporTalk can do a little more in certain areas, but are considerably harder to use and learn. TF provides most of these abilities in such a manner that learning to use any one function is relatively easy.

Because I am continually adding new features and changing the code, TF sometimes becomes less stable in a new release. Versions labled "alpha" are generally not as well tested as "beta" versions, so they have the potential for more bugs. For this reason, I leave some older versions at the site where I distribute TF, which do not have all the current features but may have fewer bugs than the most recent release.

Command Line Arguments

With no arguments, TF will try to connect to the first world defined in the configuration file(s).

With a world argument, TF will try to connect to world, as defined in the configuration file. If world is omitted, it will try to connect to the first world defined in your configuration files.

With host and port arguments, TF will define a temporary world and try to connect to it. The host may be an IP number or regular name format.


Load file instead of $HOME/.tfrc at startup.
Do not load any personal configuration file. The library will still be loaded.
Disable automatic login.
Do not connect to any world at startup.
Quiet login (overrides %{quiet} flag).


Among other things, TF allows you to:

Divide the screen into two parts, for input and output, with flexible handling of input (/visual mode).

Connect to multiple worlds and switch between them.

Wrap MUD output at the edge of the screen.

Edit text in the input buffer.

Recall previous commands.

Modify key sequences used to perform editing functions.

Bind commands to key sequences.

Define complex macros to perform MUD tasks easily.

Create triggers which automatically perform certain tasks when certain output is received from the MUD.

Modify existing macros using either a command format or interactive editing.

Support "portals" that automatically switch from world to world.

Hilite or color all or part of a line that matches a certain pattern.

Gag lines that match certain patterns.

Suppress frequently repeated text ("spamming").

Automatically log into a character on a world.

Send a text file to the MUD in flexible ways, or echo it locally.

Send the output of a system command to the MUD, or echo it locally.

Send text previously received from the MUD to the MUD, or echo it locally.

Repeat a MUD or TF command a number of times.

Do the above four things at varying intervals, or at a rapid-fire rate.

Log a session to a file.

Separate LP and Diku style prompts from normal output.

Page output using a --More-- prompt.

Recall previously received text.

Configuration Files

TF will attempt to read two files when starting. The first is a public configuration file "stdlib.tf", located in TFLIBDIR. TFLIBDIR is defined when TF is installed, and is often /usr/local/lib/tf.lib, or under the home directory of the installer. This library contains many macros and definitions essential to the correct operation of TF.

Next, TF will attempt to read your personal configuration file, $HOME/.tfrc, in which you can put any TF commands you want executed automatically at startup. Two of the most useful commands to use in a TF configuration file are /addworld and /load.

For backward compatability, TF will also try to read the TinyTalk configuration file. Its name defautls to $HOME/.tinytalk, or can be defined by the TINYTALK environment variable. This file may start with a list of worlds that will be defined as if with /addworld.


Anton Rang (Tarrant) in February of 1990 released Tinytalk, the first Tinyclient with any great number of features, including hiliting and suppression of text, simple triggers, and separating input and output on the screen. Leo Plotkin (Grod) made rather extensive modifications to Tinytalk to produce Tinywar, which was plagued with some serious bugs and was never officially released (the phrase "Tinywar doesn't exist" is often quoted), and is now an unsupported client. TF began when Greg Hudson (Explorer_Bob) merged many of the new features of Tinywar back into TinyTalk, and added many new features of his own, most notably the split screen. Some of the code in Greg's releases was contributed by Leo Plotkin. After Greg moved on to VaporTalk, Ken Keys (Hawkeye) took over design and maintenance of TF in July 1991, and continues to make improvements in features and performance.

The code size of TF has surpassed 300K (unstripped), and is signifigantly larger than Tinytalk. It is, in fact, more than three times the size of a number of existing servers. As of version 3.0, it has 66 builtin commands and 57 library commands, each documented in the helpfile.

It has been stated that TF is the most-used client in MUDdom at the current time. I haven't taken a poll, but I wouldn't be surprised.


TF has significantly changed the tinyclient world. It has a number of merits and a number of flaws, and has frequently been criticized (mostly out of boredom; nobody takes this business too seriously) as having too many features and being too damn big.

"Tinywar doesn't exist; TinyFugue merely shouldn't." -- Coined by Woodlock, I believe.

"TinyFugue is a work of art." -- Binder, obviously after having too much to drink.

"TinyFugue is the biggest hack since the platform it was built on." -- Explorer_Bob, in one of his lucid moments.

The New York Times, the Christian Science Monitor and the Washington Post all refused to comment.

Backward Incompatibilties


/rand has been replaced with rand(). Color names can no longer be user defined (but color codes still can). The "=" operator does comparison, not assignment.


Added type argument to WORLD and LOGIN hooks.


Backslashes in macros are interpreted slightly differently than in previous versions. Turning on the "backslash" flag will enable the old behavior.


The CONNECT hook is now called before the LOGIN hook. In 2.0, CONNECT was called after autologin.


In versions prior to 2.0, <space> was used to scroll the pager; 2.0 uses <tab> as the default, to allow the pager to be nonblocking.

Tinytalk style name gags and hilites are no longer supported. You must use the '*' wildcard explicitly, as in '/hilite hawkeye*'.

Tinytalk style page and whisper hilites are no longer supported. However, /hilite_page and /hilite_whisper macros are provided in the default macro library.

The .tinytalk file may not be supported in the future; use .tfrc instead.

The '-' command line option in versions prior to 2.0 is no longer supported, and has been replaced with '-l'.


When unterbamfing, the old connection should not be closed until the new connection succeeds.

If a shell quote (/quote !) reads a partial line from the pipe, the read will block until the rest of the line is read.


The Surgeon General has determined that MUDding can be detrimental to your GPA.