libinput varlink implementation?

Peter Hutterer peter.hutterer at who-t.net
Thu May 10 05:07:36 UTC 2018


one of the issues we have with libinput in the wayland world is that
debugging it is a bit harder than in X. There we can just run xinput
list-props and get an idea of what settings are applied to each device which
helps narrow down where the issue really is. Under Wayland, that is not
available, for all the obvious reasons.

Last year Carlos and I had a chat about this and thought about maybe
exposing the devices via DBus from mutter. This way we could at least have
some generic tool dumping state for debugging. This was not intended as a
configuration interface. I never got to write those patches, but I vaguely
remember KDE having something like this already, Martin could probably
commment more here.

Recently, varlink is a bit in the news (http://varlink.org) and it is simple
enough. and tempting... The current (very early) thought is to have
something in the form of:

    libinput_varlink_init_service(libinput, "compositor-name")

which sets everything up as part of libinput's epoll. It then allows for
this:

varlink call unix:@libinput-mutter.socket/org.freedesktop.libinput.Devices
{
  "devices": [
    "event2",
    "event5",
    "event0",
    "event1",
    [...]
  ]
}

Followed by more detailed calls.

The bit above works locally, it's around 100 LOC. Easy enough to extend
with device information and configuration options. But there are many
details to be sorted, amongs them the name of the socket (we may have
multiple libinput instances running). It's obviously a backchannel around
the compositor which is why I intend to only give it read-only access.

>From libinput's POV this would allow for a generic "libinput inspect" tool
(or something like that) to query the actual libinput context used.
Again, not with write access, but to query which devices are available, what
configuration options are set, etc. This would help for debugging but
varlink is not something I would generally expose without the compositor's
permission. Which means I need a 'yep' from at least some of you (and those
I forgot to add to the CC :)

Thoughts? Obviously varlink is still in its very early stages and there's no
guarantee of adoption, etc. But I'm somewhat optimistic about it, given how
simple it is to add support for it to anything. Harald, Kay and Lars are in
the CC as well, to tell me off it this is explicitly not what varlink is
supposed to do...

Cheers,
   Peter


More information about the wayland-devel mailing list