TinyFugue Setup for Icesus

TinyFugue (TF) is an old, terminal-native MUD client. It is small, fast, scriptable, and pleasant over SSH. The pieces that matter for an Icesus session are visual mode (a fixed command input line at the bottom of the terminal), UTF-8 with proper 8-bit handling for äöå, a world definition that doubles as autoconnect, and a small auto-reconnect handler for daily reboots. This guide gives you a working ~/.tfrc.

Connection Settings

Hosticesus.org
Port4000
EncodingUTF-8
Browser clientplay.icesus.org

Install TinyFugue

TinyFugue exists in two versions, and the difference matters for Icesus:

If your distro happens to package TF5, use the package. If you are not sure which version it ships, install it, run tf -v, and check. If it reports a 4.x version or you see äöå render as garbage in player names after connecting, build TF5 from source:

git clone https://github.com/ingwarsw/tinyfugue.git
cd tinyfugue
./configure
make
sudo make install

Arch's AUR (yay -S tinyfugue) tracks TF5. Other distro situations vary: check before relying on the package.

Run tf to start it. On first launch it reads ~/.tfrc; everything below goes there.

~/.tfrc: The Whole Thing

Read it through once, then the sections after walk through the parts that matter.

;; UTF-8 / 8-bit character support (äöå)
/set meta_esc off
/set istrip off
/set encoding utf-8
/set default_charset UTF-8

;; General settings
/visual on
/more on
/set beep off
/def bg = /fg -n
/set always_on 1

;; Auto-reconnect to Icesus on disconnect (e.g. reboot)
/def -p1 -hDISCONNECT -msimple -t"icesus" recon_icesus = \
    /echo %%% Disconnected from Icesus. Reconnecting in 15 seconds...%;\
    /repeat -15 1 /connect icesus

;; Worlds
/addworld -T"lp" icesus your-character your-password icesus.org 4000

UTF-8 and Finnish Characters

Icesus sends UTF-8. TF5 understands that, but the relevant settings have to be turned on explicitly because TF was originally designed in a 7-bit world. Four lines do the work:

SettingWhy
meta_esc offStops TF from interpreting bytes with the high bit set as meta-escape sequences. Without this, accented characters get reinterpreted as keyboard shortcuts.
istrip offTells TF to keep the high bit on incoming data. Stripping it would mangle every UTF-8 multibyte sequence.
encoding utf-8The display encoding TF assumes for output. Set this to match your terminal's locale.
default_charset UTF-8The charset advertised to the MUD over Telnet CHARSET negotiation. Icesus replies UTF-8 if you ask.

If your terminal locale is wrong, TF cannot fix it from inside. Confirm with locale on the shell that your LC_ALL or LANG ends in UTF-8.

Visual Mode

/visual on is the equivalent of TinTin++'s #split. It pins the input line at the bottom of the terminal and lets MUD output scroll above it without ever overwriting what you are typing. During heavy combat or chat bursts, this is the difference between knowing what you typed and guessing.

Companions:

Worlds and Autoconnect

TF organises connections as worlds. /addworld registers one:

/addworld -T"lp" icesus your-character your-password icesus.org 4000

Pieces, left to right:

If you want autoconnect on TF startup, add /connect icesus at the end of ~/.tfrc. Without that line, TF reads the config and waits for you to type /connect icesus. Either is reasonable; the explicit form is friendlier when you want to read recent log lines before joining.

~/.tfrc holds your password in plain text. Set tight permissions: chmod 600 ~/.tfrc. Do not commit the file to a dotfiles repo without redacting the password line first. If you would rather not store it on disk, leave the password slot blank and TF will prompt you on connect.

Auto-reconnect

Icesus reboots and networks drop. The /def -hDISCONNECT hook fires when TF loses a world's connection. Yours says: if the disconnected world is icesus, print a message and reconnect 15 seconds later.

/def -p1 -hDISCONNECT -msimple -t"icesus" recon_icesus = \
    /echo %%% Disconnected from Icesus. Reconnecting in 15 seconds...%;\
    /repeat -15 1 /connect icesus

Pieces:

If the game is still down after a reboot, the single attempt fails and nothing more happens. Type /connect icesus yourself once it is back, or raise the delay, for example /repeat -60 1.

Logging

TF logs per world. After connecting:

/log ~/icesus-logs/today.log

You can also automate it with a hook:

/def -hLOGIN -t"icesus" log_icesus = /log ~/icesus-logs/$[ftime("%%Y-%%m-%%d")].log

That hook fires on world login and starts a dated log automatically. /log off stops it.

Aliases and Macros

/def defines aliases and triggers. A few patterns that come up:

;; Simple text alias
/def q = /quit

;; Alias with a single argument
/def as = /send cast arrow of steam at %1

;; Highlight all "newbie" channel lines
/def -t"^newbie:" -F hl_newbie = /echo %t

Like in any client, the safest aliases are explicit. If a one-letter alias can quietly send a private tell or hit the wrong target, give it a longer name.

Common First Problems

Related Guides

Want the fastest working client before you customize anything?

Play in Browser