Every Mudlet release is like a box of presents, according to Mudlet dev Delwing. This box brings gifs, scrollboxes, and revamped sound & music to Mudlet — welcome to the first update of 2022!

You can now use gifs in your Mudlet UI

You heard it here first, folks — Edru brings us gifs in 2022! In addition to supporting images, labels now support animated gifs as well. Show animated bars and backgrounds; get awesome meme gifs; show a flying money sign when you’ve sold stuff, or a little dude running on screen while you’re speedwalking ingame — let your imagination flow!


Try it out by dragging this link onto Mudlet, or with this on the input line:

lua installPackage"https://github.com/vadi2/gifs-demo/raw/main/gifs-demo.mpackage"

That said, gifs are pretty expensive to play — so don’t go too wild with them.

You can now use background music in your Mudlet UI

Lua music and sound API got a huge overhaul by mpconley in this update! And we don’t use such words here lightly — this update opens a lot of possibilities in the audio arena.

You can set music/sounds to fade in or out, adjust the volume on them individually, choose at which time should the playback start, select how many times it should loop (infinite? sure!), or even tag sounds with a similar category so you can control them en-masse.

Crazy, huh? Just as an example, you can now background ambience music when in area/zone A… and later when changing to a new area/zone replace the ambience music with another one. You can tag all sounds as ‘battle sounds’ and stop them all at once when the battle is done. Lots of things you can do now with this!

This functionality is coming over from MCMP support that already exists in Mudlet — so if you’re a game admin and would like this for your game, go for it.

Configurable shortcuts

Don’t like that Alt+D disconnects you from the game? You don’t have to put up with that anymore! Thanks to Delwing, all shortcuts used by Mudlet are now customisable via Settings:

Better stylesheets

demonnic has done so many nice things in this release that it’s hard to pick one, so if I had to settle on one this would be it — Geyser stylesheets! They allow you to create a managed stylesheet to make it easier to set and change properties, as well as inherit properties from another stylesheet, making it easier to manage multiple styles at once. Great tool for a UI builder.

If you’ve used CSSMan previously, this is a worthy replacement! 

c/d/hecho works on labels

cecho(«Hi! This text is <red>red, <blue>blue, <green> and green») — cecho is pretty familiar to us all, isn’t it? If you want to get your text onto a miniconsole, this is a very popular option. But why only miniconsoles and not labels as well? demonnic wondered that too, rolled up his sleeves, and fixed it — you can now use c/d/hecho functions on labels!


Ever wanted to create scrollable lists with labels Mudlet? Say a list of players, or wares in a shop? While it was quite doable with miniconsoles, it wasn’t the case with labels. Edru got to work fixing that and createScrollBox() is the result. Think of it as a container that you can put your labels into and if there’s not enough space, you get scrollbars — both horizontal and vertical directions work.


Thanks to all coders who made this amazing release happen: Chris Mitchell, Damian Monogue, Gustavo Sousa, Kebap, lithiumFlower, Manuel Wegmann, Mike Conley, Nils Schimmelmann, nsweeting2, Philipp, Delwing, Slobodan Terzić, Stephen Lyons, Tim Johnson, Vadim Peretokin, and 噢哎哟喂.

Thanks to all translators who are enabling Mudlet to speak their language: Alan Sneath , Hsin-Hsiang Peng, ifelse, Leris, Marco «M0lid3us» Tironi, mohammed hossam, Tostaito, Vadim Peretokin, and vingi.


A lot of very handy improvements come with this update — too many to mention above. Scour the changelog below for good gems:

🆕 added:

  • Geyser.StyleSheet for managing stylesheets with inheritance
  • `getBackgroundColor()` to get the background color of a label/miniconsole/etc
  • `getLabelStylesheet()` to get the label’s stylesheet
  • `windowType()` to find out if something is a label/miniconsole/etc
  • Asteria as a known game with Discord Rich Presence
  • beginning of Arabic translation
  • color `echo aliases for testing triggers (`cecho, `decho, and `hecho)
  • fadein, fadeout, and start to MCMP
  • failure reasons to `installPackage` and `installModule`
  • discIRC server password support
  • mirror generic_mapper download path for chinese player
  • overline support to c/d/hecho, ansi2decho, and c/d/hecho2ansi functions
  • string.patternEscape for escaping special Lua pattern characters
  • Map deletion functionality (option in settings as well as `deleteMap()`)
  • `getProfileStats()` to see # of triggers, aliases, etc from Lua
  • `map.pauseSpeedwalk()` and `map.resumeSpeedwalk()` + mpp alias to generic mapper
  • auto-enable dark theme for dark mode desktops
  • Close profile button
  • Main window shortcuts can now be customised
  • offer to update editor theme as well when dark theme is enabled
  • first-time placeholder text for aliases
  • missing cursor and selection functionality to Geyser.MiniConsole
  • additional 2string functions for stripping formatting codes from c/d/hecho formatted text
  • allow to resize animated gif to label size
  • allow transparent labels through right click map menu
  • ANSI Esc code support for MSDP

✨ improved:

  • c/d/hecho to work on Labels
  • Lua API for Sound and Music
  • variable icons by using a color which works in both light and dark modes
  • add a QSpinWidget for adjusting special exit weight in exit dialog
  • add door symbol display to custom exits lines and to stubs
  • add MUME information blurb
  • add ScrollBox Gui Element
  • allow profiles to be individually resized when multi-playing
  • Announce how to undo it when hiding the input line buttons
  • be explicit with all our callable with 1 arg class constructors
  • Better extension selection in map save/load dialogs
  • better map.echo in map.find_me
  • code editor to show virtual characters better
  • do not try loading or saving password securely when storing them portably
  • Enhance labels to allow animated gifs
  • get Label Size hint and Geyser.Label adjustSize
  • shorten duplicate area name msg
  • ansi2decho now supports italics, underline, and strikethrough
  • c/d/hecho now support strikethrough
  • c/d/hfeedTriggers, d/hecho2ansi functions now support bold, underline, italics, and strikethrough
  • expose cecho2ansi and have it work for non-ansi color names as well
  • infra Win10 fix dependency installation script to handle nulls in PATH
  • control characters now have the choice of being displayed or hidden
  • error messages to `fg` and `bg`
  • provide alternative representations of most control characters

🔨 fixed:

  • ansi2decho to respect custom colors
  • buttontoolbar resizing on start
  • datetime:parse and :calculcate_UTCdiff to account for DST
  • empty newline on send with no command separator
  • faulty regular expression error message
  • hidden container not attaching when reloading
  • linewrapping for really long words without spaces in Western languages
  • missing space in telnet negotiation warning
  • aborting profile close to work right
  • replace throwing ambiguous error or appending to entire console if nothing is selected to replace
  • strange disabled items in darktheme right click
  • clear speedWalkPath and speedWalkWeight in generic_mapper upon completion
  • correct placement of const in a function declaration/definition
  • Don’t show hidden Geyser.CommandLines in Adjustable.Containers
  • don’t show tab character in code editor
  • get dark-desktop detection working also on FreeBSD
  • get menu shortcuts and their key sequences working all the time again
  • get replays working again
  • prevent unwanted and unneeded copying of an item in a container
  • small size of exit stubs (alternative 2 «blobs on stubs»)
  • color trigger buttons not showing colors
  • control character mode being used uninitialised
  • documentation for scrollbar related functions
  • make logging have a per profile persistent control method
  • compact input line crash when it’s translated in other language
  • correctly save fore/background color and transparency of labels in JSON map files
  • diatrics in code editor on Linux
  • enable Multi-view as soon as second profile is started and show all profiles when it is active and further profiles are started
  • enable restoration of editor toolbars even if both get hidden
  • flatten XML to prevent issues clearing settings on older Mudlet versions
  • MXP Sound/Music Tags not functioning with U Attribute
  • prevent bogus NAWS and window resize events on tab changes
  • use better form for a couple of translatable texts

4.15.1 fixes a few issues that we’ve identified.

Enjoy this update!