DHM Web Terminal
Reference guide for connecting, scripting, and speedwalking.
Connecting
Click Connect in the top bar. The terminal is preconfigured to reach DHM's server — there's nothing to type in.
If the connection ever fails, check that the proxy (websockify) is running and reachable from wherever you're loading this page.
Basics
| Keys | What it does |
|---|---|
↑ / ↓ | Step back and forward through your command history |
Enter | Send the current line |
Ctrl/⌘ + K | Clear the terminal display |
The Scripts button opens a side panel listing every alias, trigger, and path you've defined, each with a one-click delete button. If you have a lot of them, click Expand at the bottom of that panel to open the full-page Script Manager — more room, a search box, and inline editing. Changes there sync live back to the terminal if it's open in another tab.
During a password prompt, the input field automatically masks what you type.
Aliases
An alias is a shortcut: type a short word, get a longer command (or several) sent in its place. Works like a bash alias — arguments you type after the alias name get handled automatically.
Create one
#alias {k} {kill %1}
Now typing k orc sends kill orc. %1–%9 refer to the words you typed after the alias name; %0 or %* means everything you typed, unsplit.
No placeholder? No problem
#alias {id} {c 'identify'}
Since this alias body never uses %1, whatever you type after id gets appended automatically — id sword sends c 'identify' sword.
Multiple commands
#alias {gg} {get all;wear all;wield sword}
Semicolons queue up multiple commands from one alias. Use \; if you need a literal semicolon sent to the MUD.
Manage aliases
#alias list every alias #alias k show what "k" expands to #unalias k remove it
Triggers
A trigger watches incoming text from the MUD and reacts automatically. There are three kinds:
| Command | Effect |
|---|---|
#action action | Sends a command back when the pattern matches |
#gag gag | Hides matching lines from the display entirely |
#highlight highlight | Recolors matching lines so they stand out |
Auto-reply example
#action {%1 tells you} {say thanks, %1}
%1 here is a capture from the incoming line, not a typed argument — whatever matched that part of the pattern gets substituted into the command.
Hide the noise
#gag {is practicing}
Make it pop
#highlight {You are bleeding} {#c9605a}
The second argument is any CSS color — a hex code like #c9605a or a name like red.
Manage triggers
#action list every trigger, with its ID #unaction 3 remove trigger #3 #ungag {is practicing} or remove by exact pattern text #unhighlight {You are bleeding}
Matching is done against each complete line with color codes stripped, so ANSI colors from the MUD won't interfere with your patterns.
Speedwalking & Paths
Type a compressed direction string and the terminal walks it for you, one room at a time.
3n2e5s
Sends north ×3, east ×2, south ×5 — each direction is sent with a short pause in between (400ms by default) so room descriptions and triggers have time to resolve.
DHM uses the six cardinal directions, so speedwalks are built from n s e w u d only (no diagonals).
Record one instead
Rather than typing the sequence yourself, you can walk it and let the terminal remember:
#path record start recording n;n;n;e;e walk normally -- these are just example moves #path save {home} stop and save what you walked as "home"
While recording, typing #path with no arguments shows your progress so far. #path cancel discards the recording without saving. Recording captures both short (n) and full-word (north) movement commands, however you type them, and compresses them automatically — walking north three times and east twice gets saved as 3n2e.
Save a path by name
#path {home} {3n2e}
Afterward, just type home to walk it. Manage saved paths with:
#path list every saved path #path home show what "home" expands to #unpath home remove it
Tuning it
#speedwalk off disable auto-parsing of compressed directions #speedwalk on re-enable it #speedwalk delay 200 change the pause between steps (ms)
Saving your setup
Aliases, triggers, paths, and your speedwalk settings all save to this browser automatically — no action needed. They'll still be there next time you load the page, unless you clear this site's browsing data or switch browsers/devices.
#export to print a JSON snapshot of everything you've defined. Copy it, then on the other browser type #import {paste it here} to restore it.
The Clear saved data button at the bottom of the Scripts panel wipes everything and starts fresh.
Command reference
| Command | What it does |
|---|---|
#alias {name} {body} | Create or update an alias |
#alias / #alias name | List all aliases, or show one |
#unalias name | Remove an alias |
#action {pattern} {command} | Create an auto-reply trigger |
#gag {pattern} | Create a gag (hide matching lines) |
#highlight {pattern} {color} | Create a highlight |
#action | List all triggers with their IDs |
#unaction / #ungag / #unhighlight id-or-pattern | Remove a trigger |
#path {name} {sequence} | Save a named speedwalk directly |
#path record | Start recording your movement |
#path save {name} | Stop recording and save it under a name |
#path cancel | Discard the current recording |
#path / #path name | List all paths (or recording progress), or show one |
#unpath name | Remove a path |
#speedwalk on|off|delay <ms> | Configure speedwalk parsing |
#export | Print your full setup as JSON for backup |
#import {json} | Restore a setup from JSON |
#clear | Clear the terminal display |
#help | Print a short command summary in the terminal |
Known quirks
news, it'll parse as north, east, west, south rather than being sent as text — this is the same behavior real tintin++ has. Type it in CAPS (e.g. NEWS) to send it literally instead.
#export / #import to carry them over.