Okay, here's how to set this up!

You need to create a udev rule for the "second" input device that sets ENV{WL_SEAT} to a string other than "default", and then start Weston from a virtual console. (At least, starting it from another Wayland session didn't work for me.) That's it!

The WL_SEAT property is what Wayland refers to as a "logical seat". Assign the same seat name to a mouse and a keyboard to make them work together! The default seat is "default".

Detailed steps:

  1. Use sudo libinput list-devices to find the device file (like "/dev/input/event12")
    2. Use udevadm info -a /dev/input/event12 to find the parent device with a catchy ATTRS{name}.
    3. Create a file /run/udev/rules.d/00-multiseat.rules like this:

    ATTRS{name}="Name of your mouse" ENV{WL_SEAT}="second"

    4. Run sudo udevadm trigger to apply the new rules.

    You can check again with sudo libinput list-devices. The device's "Seat" should now say "seat0, second"!

You could try this script (requires zenity & possibly more tools? Please read before running!) https://github.com/n3rdopolis/rebeccablackos/blob/master/rebeccablackos_files/usr/bin/configureseats

(Doesn't work on #NixOS, where /etc/udev is read-only. 💀)

I'd love to have a little command line helper tool to help set this up, for an arbitrary number of mice! :D