MangoWC 0.18.0 Lands With TOML Config, Auto-Reload, and One Breaking Change
The dwl-based Wayland compositor gets a modern config format and automatic reloading, alongside one change you'll want to migrate away from.
MangoWC 0.18.0 shipped today, and it is the biggest configuration change the dwl-based Wayland compositor has seen. It brings long-awaited TOML config files, adds automatic reloading, and renames most of the legacy option names. That last bit is the one breaking change, and it comes with a migration script you should run before your first launch.
For anyone still mapping out the Wayland ecosystem, Mango calls itself "dwm but wayland." It starts from dwl's lean, quickly-built foundation and stacks animations, extra layouts, blur, shadows, corner radius, and a host of per-window rules on top. It rides on wlroots, the shared graphics layer behind Sway and Hyprland. It is arguably the most ambitious "dwm for Wayland" project out there right now.
This follows 0.15.0, which brought HDR and window grouping and quietly deprecated the old dwl IPC, and 0.16.0, which added touch support, configurable tag counts, and non-blurring XWayland scaling. Now comes 0.18.0, which is really a config release dressed up as a normal update.
Config finally gets modern
Here is the thread that ties the whole release together. Historically Mango used a terse key=value style with run-together lowercase identifiers like gappih, mfact, and isfloating. It worked. It also looked hand-hacked once you started writing anything elaborate.
0.18.0 answers both problems at once. Mango can now parse TOML, the human-readable format behind Rust's Cargo and Waybar. Per the docs, mangowm reads .conf and .toml with the same option names and values, only the syntax differs. The format auto-detects from the file extension, a leading [ forces TOML parsing, and sourced files follow their own extension. You can even mix the two styles if you want to.
The payoff is mostly about unambiguity. Repeated lines, which are illegal as duplicate keys in TOML, become clean arrays. Bindings split into per-mode tables. A full reference config lives on the toml branch of the mango-config repo, and there is a dedicated conversion page walking through the mappings.
The normalization of keys is where the breaking change lives. Legacy names get rewritten into explicit snake_case form. windowrule becomes window_rule. mfact becomes master_factor. isfloating becomes is_floating. gappih becomes gap_inner_horizontal. noshadow becomes no_shadow. syncobj_enable keeps its name, apparently.
Rewriting your config by hand is exactly the last thing you want after upgrading, so the release ships migrate-config-keys.sh. Point it at your config directory, defaulting to ~/.config/mango, and it recurses through .conf, .toml, and .sh files rewriting each legacy key in place. It does backups and dry-run reporting if you ask. And here is a nice detail worth remembering: the regex is word-boundary-safe. It deliberately leaves look-alikes alone. Values like "my-appid", Waybar module names like "mango/keymode", and CSS ids like "#keymode" survive untouched.
Beyond the config
Config was the headline, but 0.18.0 packs in real workflow changes too.
Set auto_reload_config=1 and Mango watches the config file, reloading it the moment you save. Keybinding tweaks take effect without a restart or a manual trigger. That alone is worth the upgrade if you live in your config.
Variables are now referenceable by $name or ${name}, and they work inside bind combos, not just values. So "$Mod+Return" = "spawn,$term" actually means something once you define term. It makes configs a lot less repetitive.
There is a new "nag" message too, a configurable announcement channel the maintainers can use for reminders. A demo video ships alongside it to prove it works.
On the window-management side, you can drag windows to a persistent group bar, and edge resizing is finally supported. Two new options control whether that bar is always visible and whether it gets a close button. Monocle and Deck layouts gain a tab mode that merges stacked windows, which helps when you have a pile of windows sharing one tag. Two more Monocle options strip gaps and borders entirely. And if middle-click paste has been driving you mad, there is now an option to turn it off.
0.18.0 also bundles a broad set of stability fixes, several aimed at XWayland, the perennial complexity trap. It fixed the display not re-enabling after being turned off, a crash on exit when XWayland failed to start, missing alpha in text drawing, and an overview preview that spilled onto other screens. XWayland windows that had hidden themselves could finally map back, and a skipped configure call that left windows stuck at old sizes is now resolved.
The interesting line item is the BSD build. Mango now builds on BSD and is packaged for FreeBSD and OpenBSD, showing up in FreshPorts' x11-wm/mango. It is quietly expanding beyond the usual Arch, Fedora, and NixOS crowd.
Where it lands
Mango's 2026 releases track a clear "stability first" arc. Each one hardens wlroots 0.20 compatibility, adds a feature, and shaves off rough edges. 0.18.0 keeps that pattern, making the config surface both more powerful and more maintainable at the same time. TOML kills a class of parsing ambiguity, auto-reload speeds up experimentation, and the key pass future-proofs the format. The cost is one scripted migration and a weekend where someone forgot to run it.
Community reaction has been warm, with early thumbs-up from users like ClixTW, Ruixi-rebirth, and JIAnnLee22.
To get it, the git package on Arch installs with yay -S mangowm-git. Fedora, Gentoo, Guix, NixOS, openSUSE, PikaOS, and AerynOS all have packages, and you can always build from source. Head here to the documentation.
If you are on 0.17 or earlier, run migrate-config-keys.sh against your config directory before first launch. Then take a look at the TOML reference on the toml branch, and consider upgrading.
