Whoa: Weston, the reference compositor for #Wayland, supports multiple physical independent mice at the same time!
-
Next up: Chromium! It has a very pragmatic solution: It just *ignores* all cursors but the first one!
In the video, the arrow-shaped cursor can click on stuff. The turtle has no power here.
-
In Firefox, it seems like all mouse events are mashed together, and are seen as coming from the same device.
That means that both cursors can click – if the other one "holds still". Otherwise, I guess Firefox is very confused by a click on a link while the mouse is not in it!
Selections feel strange – the last-moving cursor will determine the selection.
Also notice how, if one cursor hovers a link, *both* turn into hand icons!
-
Of course, we *had* to try a drawing application next!
Here's @tldraw (in Firefox)!
Collaborative drawing at it's best!
-
Finally, I tried attaching an additional keyboard and assigned them to a different "seat"!
That worked really well! In Weston, each "seat" has its own keyboard focus, so you can actually work side-by-side with two mice + two keyboards independently!
Also!!! The two seats have their own (independent) clipboards!!!! Whatttt!
I totally didn't expect this. But multi-seat as a concept seems deeply integrated into libinput + #Wayland! Now it's up to GUI toolkits and compositors to support it!
-
Tried it again, and the independent clipboards still seem a bit glitchy after all… :(
An issue asking for proper support in GTK was closed five years ago, for example… https://gitlab.gnome.org/GNOME/gtk/-/issues/1574
-
Side note: I think more window managers should support *this* feature!
-
Very useful when your very long line of code doesn't fit on your screen, for example! :P
(Shout-out to @xssfox, who first did this on X.org! https://sprocketfox.io/xssfox/2021/12/02/xrandr/)
-
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
-
S steffo@a.junimo.party shared this topic on