TinTin++ Setup for Icesus
TinTin++ is a fast, terminal-native MUD client that fits well into a keyboard-driven workflow. It runs over SSH, takes plain text config files, and gives you a proper split screen with a visible command line at the bottom — the most underrated quality-of-life feature for long Icesus sessions. This guide covers a working ~/.tintinrc, the split-screen layout, UTF-8 handling for äöå, and autoconnect with auto-reconnect.
Connection Settings
| Host | icesus.org |
| Port | 4000 |
| Encoding | UTF-8 |
| Color | 256-color (or true color, if your terminal supports it) |
| Browser client | play.icesus.org |
Install TinTin++
- Debian / Ubuntu:
sudo apt install tintin++. - Fedora:
sudo dnf install tintin. - Arch:
sudo pacman -S tintin++. - macOS:
brew install tintin. - Source: tintin.mudhalla.net.
Run it with tt++. The first thing TinTin++ does is read ~/.tintinrc, so that is where the rest of this guide starts.
Two-File Config Pattern
Keep the launcher and the session separate. ~/.tintinrc only loads the real config; ~/.tintin/icesus.tin holds everything else. That way you can have several MUDs as side files and switch between them by editing one line.
~/.tintinrc
#nop -- TinTin++ startup config
#nop -- Auto-load Icesus session
#read {~/.tintin/icesus.tin}
~/.tintin/icesus.tin
The full file is below. The sections after this code block walk through what each part does and why.
#nop -- Terminal & encoding
#config {charset} {UTF-8}
#config {color mode} {256}
#config {packet patch} {0.5}
#nop -- Split screen: scrollback on top, input at bottom
#split
#config {scroll lock} {on}
#config {command echo} {off}
#nop -- Show the Icesus prompt on the status bar
#prompt {%1 %2 >} {%1 %2 >}
#status {%p}
#nop -- Connect to Icesus
#session icesus {icesus.org} {4000}
#nop -- Auto-reconnect after disconnect (e.g. daily reboot)
#event {SESSION DISCONNECTED} {
#showme {<128>--- Disconnected. Reconnecting in 15 seconds... ---<reset>};
#delay {reconnect} {
#showme {<128>--- Attempting to reconnect... ---<reset>};
#session icesus {icesus.org} {4000}
} {15}
}
#nop -- If reconnect fails, keep retrying
#event {SESSION CONNECT FAILED} {
#showme {<128>--- Connection failed. Retrying in 15 seconds... ---<reset>};
#delay {reconnect} {
#showme {<128>--- Attempting to reconnect... ---<reset>};
#session icesus {icesus.org} {4000}
} {15}
}
#nop -- Aliases
#alias {q} {quit}
#alias {rr} {#session icesus {icesus.org} {4000}}
Split Screen and the Visual Command Line
#split is the single most useful TinTin++ command for a real session. It divides the terminal into two regions: a scrolling output region on top and a fixed command input region at the bottom. New game text never overwrites your half-typed command, and the cursor stays where you expect it during long combat or chat bursts.
Two companion settings keep the split clean:
#config {scroll lock} {on}— new output stops scrolling automatically when you scroll back to read older lines, so a sudden flood does not yank you forward.#config {command echo} {off}— commands you type are not echoed back into the output region. The input region already shows what you typed; echo just adds noise.
If you ever need a single-region terminal again (for paste-heavy work), #unsplit reverts.
UTF-8 and Finnish Characters
Icesus sends UTF-8 by default for player text, room descriptions, and Finnish names. #config {charset} {UTF-8} tells TinTin++ to read incoming data as UTF-8 and to send your input the same way. This is what makes ä, ö, and å render correctly in room and player names instead of becoming question marks or boxes.
Two related settings:
#config {color mode} {256}— uses the modern 256-color palette so Icesus ANSI colors look right. If your terminal advertises true color, you can set{TRUE}instead.#config {packet patch} {0.5}— gives slightly fragmented Telnet packets half a second to coalesce before TinTin++ tries to parse them. Reduces broken prompts on slow links.
Autoconnect
#session icesus {icesus.org} {4000} opens a session named icesus against the host and port. Because this line lives at the bottom of ~/.tintin/icesus.tin, the moment you start tt++ it reads ~/.tintinrc, which loads the session file, which connects.
Picking a session name matters. Anywhere in TinTin++ that you can target a specific session, you do so with #session icesus .... The rr alias above is just a quick way to reconnect manually if you have closed the session yourself.
Auto-reconnect
Icesus reboots happen, networks blip, laptops sleep. The #event {SESSION DISCONNECTED} handler keeps your client useful through all of that. When a session drops, the event fires, prints a message, and schedules a reconnect 15 seconds later through #delay. #event {SESSION CONNECT FAILED} handles the case where the reconnect itself fails, so the loop keeps retrying every 15 seconds until the MUD is back.
Pick a delay you can live with. Five seconds is aggressive and can spam the server during a real outage. Fifteen to thirty seconds is friendlier and still feels instant when you sit down at the keyboard again.
Auto-login — Read This First
TinTin++ can answer the login prompts for you with #action triggers. The pattern is:
#action {By what name do you wish to be known?} {your-character}
#action {Please enter your password:} {your-password}
#action {~Please enter your password:} {#line gag}
Auto-login stores your password in plain text on disk. Only do this on a machine you fully control, with a config file that has restricted permissions (chmod 600 ~/.tintin/icesus.tin). Never commit it to git, dotfiles repos, or shared drives.
If you need to be careful, skip the password line and type it yourself once per session. The autoconnect still saves you from re-typing the host and port.
The third #action uses a regex match (the ~ prefix) and pipes the password prompt line through #line gag so the password is not printed back to your scrollback. Without that, your password ends up plainly visible in the output region the moment you reconnect.
Logging
TinTin++ has a built-in logger:
#log open ~/icesus-logs/%y-%m-%d.log
Run that once a session, or add it to icesus.tin after the #session line so every session starts a dated log file. #log close closes the current log; #log append reopens an existing file in append mode if you want one log per day across multiple connections.
Aliases You Will Actually Use
Icesus has good global aliases already (alias -global in-game shows them). TinTin++ aliases are most useful for character-specific commands you want to keep out of muscle-memory hazards:
#alias {q} {quit}
#alias {u} {update -R %0}
#alias {ba} {battle -a attack}
#alias {bc} {battle -a casting}
#alias {as %1} {cast arrow of steam at %1}
The %0 placeholder passes everything after the alias name; %1 takes the first whitespace-separated argument. If an alias can quietly hit the wrong target or send the wrong channel, make it longer and more explicit, not shorter.
Common First Problems
- Foreign characters look broken: confirm your terminal is UTF-8 (
localeshowsUTF-8) and your~/.tintin/icesus.tinhas#config {charset} {UTF-8}. - Colors look wrong: check
#config colorin-session and try{256}or{TRUE}. Many terminal multiplexers (tmux, screen) need their own true-color flag set. - Reconnect storm: if you accidentally fall into a connect loop, type
#kill delayto cancel pending delays. - Input region missing: your terminal may be too short.
#splitneeds at least a couple of free rows. Resize and re-run. - Lines clipped at the right edge: set your TinTin++ window wider and run
screensizeorterm ansiin-game so Icesus knows your terminal width.
Related Guides
Want the fastest working client before you customize anything?
Open the browser client