I finally got around to experimenting a bit with kmonad.
It's a really nice tool. It is easy to remap keys in a consistent and reliable way as it works at low level using input keycodes. That makes it great for remapping both basic layouts and modifier keys, allowing you to implement complete extra layers such as Extend. Obviously, because it works at low level, it doesn't really give you a way to have extra symbols/foreign languages etc unless those symbols are already in your default keymap. But it does support a whole bunch of tap/hold/timeout features which make things like dual-role home-row modifiers possible (I haven't fully explored these yet).
Here is a basic configuration which gives you Colemak-DH plus Extend:
https://github.com/stevep99/kmonad/tree … r/stevep99
On Linux, using kmonad has both advantages and disadvantages compared to using the XKB method. I'll try using my kmonad config for a few days instead of XKB to see if I notice any problems.