Same happens in Cage, currently it eats 686M, so I don't know who to blame: wlroots or compositors.
Over night it grew to 602M, even Firefox eats less (587M)
In Plan 9 keybindings are set via /dev/kbmap (a device!), /sys/lib/kbmap/ has files to map key presses to UTF characters, furthermore it has 2 special files useful for laptops (xkeyboard-config(7) doesn't have equivalent for this!!!):
- mouse-csa maps Ctrl, Start and Alt to 3 mouse buttons;
- mouse-fn maps F1, F2, F3, F4 and F5 to 3 mouse buttons and mouse wheel.
But POSIX systems can't be that simple, first to make UTF characters printable you must install fonts because base systems usually don't have sane fonts (FreeBSD is the only place where I can read russian characters in console), then you must set LANG or LC_ALL environment variable to something.UTF-8 because otherwise it will refuse to print UTF characters, in GNU and BSD world you must also set encoding variable to UTF-8, then you must use X keyboard extension to map key presses to UTF characters, but you still can't map key presses to mouse buttons and volume control, insane!
In Rio windows can control mouse position!
I think it's related to depending on Cage, examples: QEMU, Minetest
Examples: QEMU, Sway
But it doesn't on my Lenovo Ideapad 100-15IBD 80QQ, it simply takes away input without producing any output, but if I'm lucky it crashes and I don't reboot my laptop.
But it's not convenient, in Rio even screenlock(1) works without setting env. Writing scripts which will set WAYLAND_DISPLAY for me is also a weird and tedious solution, I mean I'll have to replace executables in /bin with scripts. In this case I think it's best to write programs which will ignore WAYLAND_DISPLAY and simply figure out the primary display (and if they won't, they'll give up). Also I'm worried about that running programs outside of cage breaks transparency.