river
river copied to clipboard
Design and implement an input-management protocol
Wasn't really sure how to phrase the title, but basically, make it possible to configure things like left/right-hand mouse, trackpad settings such as tap-to-click, drag and drag-lock etc.
Pretty sure this is on someones mental TODO list, but couldn't find a tracking issue. Adding one since I'm very interested in this.
This is certainly something we need eventually, though other features I personally find more important have taken priority so far.
It actually is on my mental TODO list.
I personally think the best way to approach this is with an external program to configure inputs (like kanshi does for outputs) that uses a wayland extension to talk to the compositor. If such a protocol extension gains traction, there would be a compositor agnostic way to configure input devices, which I think would be quite nice.
An input equivalent to wlr-output-management
sounds desirable to me, and implementing such a protocol instead of river-specific configuration options would be preferable.
The steps forward for this would be:
- Writing such a protocol and submitting it to
wayland-protocols
for review - Implementing this protocol in wlroots
- Writing a simple cli client
- Calling into the wlroots implementation and implementing whatever can't reasonably be done in wlroots in river
This feature is also the only major blocker to supporting multiple seats as most (all?) of river's code already behaves as if there are multiple seats. The only real missing piece for multi-seat support is having a way to assign different input devices to different seats, which is part of input configuration and should probably be covered by the proposed protocol as well.
As I see no chance of such a protocol happening in the nearish future, I decided to experiment with just implementing basic input configuration in river. See #303, although it does not work yet.
#303 has been merged and river now supports basic input configuration. This issue however will stay open to track design/implementation of the proposed protocol described above.