[HN Gopher] Q3 Linux touchpad update: Multitouch gesture test pa...
       ___________________________________________________________________
        
       Q3 Linux touchpad update: Multitouch gesture test packages now
       ready
        
       Author : wbharding
       Score  : 251 points
       Date   : 2020-10-06 17:54 UTC (5 hours ago)
        
 (HTM) web link (bill.harding.blog)
 (TXT) w3m dump (bill.harding.blog)
        
       | jeffbee wrote:
       | Why does ChromeOS have all of the stuff that this project claims
       | to be developing? Are they using proprietary touchpad drivers?
        
         | cmrdporcupine wrote:
         | The whole ChromeOS UI and input stack is entirely different
         | from a typical Linux desktop. I'm not sure there's a lot there
         | that could be shared out to the Linux X11 desktop world.
        
           | criddell wrote:
           | Is there something about the standard Linux input stack that
           | makes it especially difficult to create a great touchpad
           | experience?
           | 
           | Apple got it right a long time ago, ChromeOS is good, and
           | Windows is too. What's different about Linux?
        
             | dastx wrote:
             | Apple got it right because they built a stable api around
             | it, and integrated all their applications with it.
             | 
             | Linux hasn't got it right because there is still no unified
             | api, even if there was, all apps must implement it to be
             | useful.
             | 
             | This is where OP push comes in. To make all of this
             | possible through donations. You should read his older blog
             | posts. They're worth a read.
        
             | vetinari wrote:
             | Apple supports only their own touchpads, ChromeOS also
             | selected ones. Windows provides the great experience only
             | for the Precision touchpads (i.e. not even to Apples under
             | Bootcamp). Linux is expected to work with random crap, that
             | even its vendors have given up upon.
             | 
             | That's the difference.
        
               | mdoms wrote:
               | Linux input still sucks with hardware that works great on
               | other OS's.
        
               | vetinari wrote:
               | That's exactly not the point.
               | 
               | The point was, that the other OSes picked specific
               | hardware and they provide great experience only on that
               | hand-picked hardware and nothing else. I specifically
               | noted, that Apple touchpads do not work under Bootcamp as
               | nicely as the Precision ones do, as an example.
        
         | laksdjfkasljdf wrote:
         | I still have no idea what this project is trying to do
         | _exactly_.
         | 
         | I always got decent multitouch on linux (when the touchpad is
         | even recognized, but that's another problem).
        
           | cxcorp wrote:
           | The first post's discussion is here:
           | https://news.ycombinator.com/item?id=17547817
        
           | listennexttime wrote:
           | It's okay, neither does the blog author. Despite their only
           | value-add being a PM-role, they aren't doing a good job of
           | that either.
           | 
           | As evidenced by the fact that they've basically just resorted
           | to doing tons of retrofit to bring _benefits that already
           | exist in Wayland_ to a legacy, deprecated, aging stack.
           | (literally every single change listed). Also, it 's no longer
           | just about improving the touchpad (since libinput is already
           | pushing the envelope there), and instead ... X11 Gestures?
           | Okay? (Good luck to those brave enough to install a patched
           | X11 from a PPA!)
           | 
           | I feel sorry for the people who thought there was enough
           | substance to donate. How this project progresses with
           | increasingly less clarity and continues to be celebrated here
           | deeply confuses me.
        
             | p12tic wrote:
             | Povilas from the linked blog post here.
             | 
             | The reasons why we chose the current path were explained in
             | detail in the blog posts.
             | 
             | Touchpad gestures was the most popular feature to
             | implement. In order to do that we needed a good reason why
             | all the other project maintainers would want to spend time
             | discussing a feature with us. Wayland is the future, yes,
             | but currently a lot of users are still on X which makes our
             | argument much less convincing. Now we can say that touchpad
             | gestures will soon be available everywhere and get their
             | attention this way.
             | 
             | I agree that X is legacy platform. Unfortunately it may
             | still be used for quite some time. Core functionality such
             | as screenshots and input record/replay is not universally
             | available on Wayland. So X will still be used for
             | significant amount of time.
             | 
             | Please tell me what else I could explain to increase the
             | transparency of the project and I'll try my best to do so.
             | Thanks!
        
               | tssva wrote:
               | Did you actually talk to other project maintainers and
               | get feedback that they would only be interested if it
               | were also available for X before starting down this path?
        
               | p12tic wrote:
               | I haven't asked this question unfortunately. Adding
               | touchpad gestures needs changes in every GUI toolkit
               | library except GTK and every application we would like to
               | support. So I trusted my own experience of seeing the
               | amount of effort needed to contribute an improvement for
               | niche use cases. To make matters worse, an initial OK
               | from a maintainer often does not really mean a lot. What
               | matters is the actual time commitment to discuss design
               | and review patches. Issues that increase the amount of
               | effort needed for long-term maintenance and end-user
               | support tend to decrease maintainer engagement a lot.
               | Wayland-only touchpad gestures splits the user-base long
               | term and thus fits this criteria very well.
               | 
               | At this moment I'm not really sure if I would go the same
               | path had I knew all the information I know now. Having
               | said that, we've only spent around a single man-month of
               | effort working on this. In the grand scheme of things
               | this detour is tiny.
        
         | [deleted]
        
         | zelly wrote:
         | Yes, Synaptics produces closed-source drivers for Windows and
         | ChromeOS. ChromeOS also uses its own low-level input/graphics
         | stack, not X11, so even if you had the code to it you wouldn't
         | be able to just compile it on GNU/Linux.
        
         | SahAssar wrote:
         | ChromeOS has taken the path of Android on a lot of things, so
         | drivers are usually hard to mainline.
        
         | tpush wrote:
         | What driver stack is Google using for ChromeOS? Is it
         | proprietary? I assume all the Chromebooks have decent touchpad
         | functionality, can't that be mainlined or whatever?
        
           | quaa55 wrote:
           | i believe chromeos uses a custom kernel with their own stack.
        
       | nmstoker wrote:
       | I get the reasons recurring sponsorship helps projects, but is
       | there any chance to sponsor as a one time payment?
       | 
       | As a resident of a non-USD country, my bank shafts me for foreign
       | currency payments, which is partly a fixed fee and partly driven
       | by the total amount. Therefore lots of small payments ends up
       | paying a much larger portion to the bank, money that I'd
       | otherwise prefer the project got!
        
         | dastx wrote:
         | > but is there any chance to sponsor as a one time payment?
         | 
         | You can simply start a monthly plan, then cancel it once the
         | first payment is gone. It's a bit more overhead, but if you
         | believe in it, it's worth it.
         | 
         | Also, slightly off-topic, and this entirely depends on where
         | you live. Regarding your bank, you may be able to look into
         | start up banks (also called Neo banks), they often have zero
         | foreign currency fees and exchange at the Master Card or Visa
         | base exchange rate. This has in the past saved me a huge
         | amount, mostly for travel to foreign countries, but also for
         | purchases, however, receiving money is the same.
         | 
         | As examples, in the UK we have Starling, Monzo and some others
         | that all give you zero foreign exchange transaction fees. In
         | many European countries Revolut is available (also in the UK),
         | but I closed my account with them for ethical reasons. There is
         | undoubtedly more neo banks available especially in the
         | development world but you will need to do research for your
         | country.
        
       | rhodysurf wrote:
       | I created an extension for GNOME a while ago to add custom
       | multitouch gesture actions on a workspace scale which seems a
       | while off for this project: https://github.com/mpiannucci/gnome-
       | shell-extended-gestures
       | 
       | I would love for them to progress enough so this extension is no
       | longer necessary. Making great progress!
        
         | solarkraft wrote:
         | Does this make the animation follow the fingers? I think I
         | tried this a while back and was disappointed :(
        
           | rhodysurf wrote:
           | Sadly, It does not. I have thought about how to do it and its
           | a lot of work and time I don't currently have unfortunately.
           | Part of the reason I hope this project continues to make
           | something like this easier
        
       | listennexttime wrote:
       | Oh look, the goals and goalposts have moved again. Now apparently
       | it's X11 Gestures (literally every patch, for functionality that
       | _already exists in Wayland_ ). What a waste of donated money.
       | 
       | Gestures, in Wayland or X11:
       | https://github.com/Coffee2CodeNL/gebaar-libinput
        
       | dastx wrote:
       | I was looking for an update just a few days ago, but didn't find
       | anything. No code, no blog posts nothing. So thank you for this,
       | as I'd lost hope.
       | 
       | This seems like great progress. I'll be donating a bit!
        
       | ktm5j wrote:
       | Cool! I've been using libinput-gestures for a while now as a
       | hackish way to accomplish multitouch gestures. It's easy to use
       | and works well if anyone wants this functionality without waiting
       | 
       | https://github.com/bulletmark/libinput-gestures
        
         | Fnoord wrote:
         | I've tried this with an Apple Magic Trackpad 2 (the best stand-
         | alone trackpad/touchpad available). It doesn't work smooth. It
         | is very strict on the gestures (low fault tolerance?), unlike
         | the very same device within a MBP (2015) on macOS.
         | 
         | I wonder about this though. To me it seems this is very
         | important to get to work for alternative Linux-based smartphone
         | OSes such as SFOS, pmOS, UT, PureOS, etc etc.
        
         | duhi88 wrote:
         | Have you tried this with Apple's Magic Trackpad or al=ny other
         | bluetooth trackpads?
        
       | seltzered_ wrote:
       | Thanks for the update! Curious, is there anything specific in
       | terms of which platforms you're seeking testing help on (e.g.
       | older macbooks, newer haptic touch macbooks, synaptics-based
       | sensors)?
        
         | p12tic wrote:
         | Currently we're focusing on touchpad gestures (i.e. multi-
         | finger touch swipe or pinch) as the poll [1] made in June
         | indicated that touchpad gestures was the most wanted feature.
         | 
         | There's plenty of work just implementing the basic handling of
         | touchpad gestures, not even talking about any kind of polish.
         | So at this moment we just assume that libinput handles touchpad
         | gestures well and don't test at all. Once the basic parts are
         | done we'll start polishing and this is when we'll test on as
         | much hardware as possible.
        
           | p12tic wrote:
           | Whoops, I forgot the link to the results of the poll:
           | 
           | [1]: https://bill.harding.blog/2020/06/22/linux-touchpad-
           | project-...
        
       | juancampa wrote:
       | For my last couple of laptops I've used libinput first because
       | everyone says it's the best option, but it always feels
       | incredibly hard to perform small, precise movements. For example:
       | try moving the mouse in a small circle (perhaps the size of the
       | "Y" logo above). So both times I ended up switching to the old
       | synaptics driver which seems to work better. I hope this project
       | helps fix that so I'm sponsoring it
        
         | codethief wrote:
         | > For example: try moving the mouse in a small circle (perhaps
         | the size of the "Y" logo above)
         | 
         | Holy shit, you're right! I never noticed! There goes my plan to
         | play old FPS games (like Wolfenstein: Enemy Territory) on Linux
         | without any major hassle...
        
           | tsm wrote:
           | For me it's just a touchpad issue; my USB optical mouse is
           | completely fine
        
             | codethief wrote:
             | Mine apparently isn't :\
        
         | acabal wrote:
         | Agreed. I'd love to use Wayland for everyday use but the
         | libinput touchpad drivers are impossible.
         | 
         | Like you stated, the big problem is very fine movements just
         | don't work in libinput. On X11/synaptics I can make movements
         | as fine as rolling my fingertip in place on the touchpad, or
         | drawing a minuscule circle, and it will pick it up. Libinput on
         | the same touchpad does nothing, it's like it's stuck in
         | molasses. And libinput has almost no configuration options so
         | there's nothing I can even tweak.
         | 
         | I really hope they address this soon, or I'll be stuck on X11
         | forever!
         | 
         | Edit: I'm using a Thinkpad P1 Gen2, a top-tier recent-gen
         | workstation laptop, and this is a big enough problem where it's
         | forcing me to use X11 on Ubuntu 20.04.
        
           | JoshTriplett wrote:
           | I'm using Wayland and libinput on an X1 Carbon, which I'd
           | expect to use a very comparable touchpad, and it works
           | flawlessly. I easily can move the mouse by individual pixels
           | by just rolling my finger, or throw it across the screen.
           | 
           | You may want to experiment with your desktop environment's
           | mouse settings, and if that doesn't help, you should consider
           | providing a detailed report to the libinput folks and see if
           | they can address it.
        
             | ghostpepper wrote:
             | Which wayland environment are you using?
        
               | JoshTriplett wrote:
               | gnome-shell 3.38
        
           | p12tic wrote:
           | Fixing issues like this is the primary goal of this project.
           | Unfortunately there's a long way to go.
        
           | kelnos wrote:
           | Odd, I'm using libinput (Dell XPS 9380), and don't see the
           | problems you describe. With my index finger on the touchpad,
           | I can "roll" my finger a little in any direction (without
           | actually sliding the finger), and the mouse moves a few
           | pixels immediately. It's hard to get single-pixel accuracy,
           | but 2-pixel accuracy is doable. I also have no trouble
           | tracing the Y Combinator logo.
        
             | Polylactic_acid wrote:
             | I also have a dell xps but I'm on X11 right now due to
             | teams screen sharing. I also have no problems doing exactly
             | the same thing while my sisters MSI laptop on windows makes
             | it almost impossible to move the pointer less than an cm on
             | screen.
             | 
             | I suspect this is more a hardware issue than software.
        
           | arghwhat wrote:
           | > In X11/synaptics I can make movements as fine as rolling my
           | fingertip in place on the touchpad, or drawing a minuscule
           | circle, and it will pick it up. Libinput on the same touchpad
           | does nothing
           | 
           | Just tried that on my Dell XPS on sway (wayland, thus
           | libinput), and rolling the tip of my finger on the touchpad
           | allows me to move the cursor in single-pixel increments on an
           | unscaled 4k display. :/
           | 
           | Maybe this is a libinput issue specific to your touchpad
           | type?
        
           | albertzeyer wrote:
           | "They" (I assume you mean libinput devs) is just one single
           | developer, namely Peter Hutterer.
           | 
           | See this discussion: libinput's bus factor is 1,
           | https://news.ycombinator.com/item?id=23254871
        
             | acabal wrote:
             | "They" is really Red Hat, who are the ones pushing libinput
             | and Wayland in the first place; and I imagine they would
             | have no problem fixing this quickly if they hired more than
             | one person to work on it.
        
         | young_unixer wrote:
         | And setting the flat acceleration profile on a touchpad doesn't
         | really disable pointer acceleration +, even though it does if
         | you use a mouse.
         | 
         | + N=1, but it worked fine before libinput (using 'xset m 1 0').
        
           | Barrin92 wrote:
           | if you're using gnome, gnome tweaks has an option to turn
           | acceleration off (just search for 'acceleration') and it
           | seems to work for me.
        
             | young_unixer wrote:
             | That works for me if I use a mouse (in fact I'm currently
             | using it), but not when I use a touchpad.
        
         | lathiat wrote:
         | I think this is an intentional driver setting to avoid false
         | touches/moves on crappy hardware. You can likely tweak it but I
         | think that's entirely the sort of thing the post author was
         | trying to work on.
         | 
         | I believe there is also a tweaks dB to set better values for
         | known hardware.
        
           | abrowne wrote:
           | It's called hysteresis.
        
       | yepthatsreality wrote:
       | It's too bad we can't condense all the rhetoric "i use Apple <x>
       | because it just works" into actual useful energy. Something like
       | this may have been solved a long time ago.
       | 
       | Glad to see movement about this. Was just considering converting
       | my XPS 9560 into a full Linux machine next week (I will miss
       | fingerprint sensor support, which brings up another point about
       | just upgrading to a model that supports it). Going to use it as a
       | testing ground for switching over my main rig to Linux and seeing
       | progress like this is really encouraging that I'm making the
       | right decision.
       | 
       | I will gladly install these test packages and help out.
        
       | Angeo34 wrote:
       | I only read about GNOME what's with Plasma?
        
         | solarkraft wrote:
         | I'm not entirely sure if it's built into Plasma, but I remember
         | having a (hacky, not with direct response) workspace switching
         | gesture on Manjaro (Wayland, of course).
        
         | p12tic wrote:
         | Povilas from the linked blog post.
         | 
         | Indeed this is a valid point, thanks. On the X server
         | applications will get touchpad gestures regardless of whether
         | one is running Plasma or GNOME. However, workspace-wide
         | gestures are not implemented in either on X yet.
         | 
         | On Wayland the display server is the one which handles
         | workspace-wide gestures. Additionally, all events go through it
         | to the applications. Perfect touchpad gesture support needs
         | support in both. As far as I know Mutter (GNOME) handles both
         | parts already and KWin (Plasma) currently handles neither.
         | 
         | Implementing touchpad gestures on Plasma would fall within this
         | initiative, I will most likely work on that at some point in
         | the future. Please vote in the poll so that we know this is
         | important to you.
        
           | justinclift wrote:
           | > Please vote in the poll so that we know this is important
           | to you.
           | 
           | The poll: :)
           | 
           | https://www.gitclear.com/polls/linux_multitouch_apps
        
       | shmerl wrote:
       | What is the situation with Wacom drawing tablets under Wayland
       | compositors? Do they work now?
        
         | Polylactic_acid wrote:
         | Seems to work fine for me. On gnome it actually creates a
         | second pointer separate pointer from the mouse one.
        
         | curt15 wrote:
         | They have worked under Gnome wayland for while. I don't know
         | about KDE though.
        
       | pkulak wrote:
       | I read through the post, but still am not totally sure: will
       | Wayland eventually be supported? What about wlroots vs mutter? Is
       | that a distinction that needs to be made?
        
       | ComputerGuru wrote:
       | I've never been a fan of Linux on laptops as I feel its DE is
       | just not there yet and prefer to stick to the terminal or the
       | desktop, but I switched my laptop to Linux about six months ago
       | to re-assess and ran into a number of big issues, the most
       | unexpected of which was the poor state of basic touchpad support,
       | not to mention multitouch input support - I genuinely thought it
       | would be a solved problem by now, but I can't blame anyone but
       | myself given that it's open source and anyone is free to
       | contribute a fix (read on).
       | 
       | IMHO the most egregious offender is libinput because everyone and
       | their pet fish seem to be in a massive hurry to drop the
       | proprietary synaptics driver and replace it with libinput; you're
       | not allowed to ask for synaptics support because all distro and
       | project maintainers will lecture you about "upgrading" to
       | libinput which has "superior" touch and multitouch support...
       | except libinput absolutely does not, even if it is theoretically
       | architectured in a way that _would_ enable superior touch
       | /multitouch support _someday_.
       | 
       | The biggest problem is that the acceleration curves libinput uses
       | are vastly inferior to those that ship out-of-the-box with other
       | operating systems or the proprietary solutions from the
       | manufacturers. When you read about the TrackPoint and the
       | research that went into developing acceleration curves/profiles
       | for input devices [0], it is hubris to think you can throw it all
       | away and expect to still have a superior product.
       | 
       | Anyway, long story short, if you're using a synaptics or
       | synaptics-compatible trackpad, the old synaptics drivers have the
       | best (by far) acceleration profiles and feel the most natural to
       | use, but they are not supported by multitouch plugins for the
       | desktop environments. That's not to say the drivers don't have
       | multitouch support: they do, and they accurately report all
       | motions, but only as raw events.
       | 
       | I wrote this simple program to read the raw input from the
       | synaptics driver and recognize two-, three-, four-, and five-
       | finger tap and swipe gestures from the raw event stream generated
       | by the synaptics driver per the kernel multi-touch protocol [1].
       | I initially wrote it in an evening after studying the protocol to
       | get just simple back/forward swipe navigations working with the
       | only actually good touchpad drivers for Linux I could find (the
       | synaptics one), and intended to clean it up before throwing it on
       | GitHub for anyone else that might find it interesting but
       | realized I wasn't sufficiently motivated to clean it up anytime
       | soon so decided to just upload it as-is.
       | 
       | sygesture [2] is written in rust and processes the raw MT
       | protocol events generated by the trackpad in real-time to
       | recognize multitouch gestures. Currently it spawns an `evtest`
       | instance rather than opening the input device directly, that was
       | a hack to not have to deal with translating the binary protocol
       | but adds a dependency on the `evtest` utility (should be in your
       | package manager). The path to device is also hard-coded in
       | `main.rs` (and currently it only supports a single input device),
       | but all that is separated from the actual parsing logic because I
       | planned on making that modular from the start, but never got
       | around to it. The mapping of gesture to action is also hard-coded
       | in `main.rs` and isn't currently configurable. (It's all very
       | easy to change even if you don't know rust, as all it does is
       | spawn a program with certain arguments in response to each
       | motion.) I'll throw an MIT license in the repo as soon as I get a
       | chance.
       | 
       | The utility is pretty bulletproof, even though the heuristic is
       | fairly simple (the rationale behind the consensus algorithm is
       | documented in the comments). It's extremely fast (don't have a
       | reliable way to measure lag, but I'm extremely sensitive to it
       | and don't detect any) and has low memory usage (CPU usage is
       | basically zero except for the duration of a gesture, if you're
       | polling at a high-enough frequency to pick up on that).
       | 
       | Something not accounted for at all in the code is support for
       | non-swipe gestures such as pinch-to-zoom and (has anyone ever
       | used it?) "circle gesture" that can be apparently be used for
       | weird things.
       | 
       | [0]: https://www.microsoft.com/buxtoncollection/detail.aspx?id=60
       | 
       | [1]: https://www.kernel.org/doc/html/v4.18/input/multi-touch-
       | prot...
       | 
       | [2]: https://github.com/mqudsi/syngesture
        
       | kilo_bravo_3 wrote:
       | Is it still almost impossible to adjust the mouse and trackpad
       | scroll speed/sensitivity, something that has been set by an easy-
       | to-find slider in every operating system ever written since the
       | invention of the scroll wheel, in Linux?
        
       | auraham wrote:
       | Has anyone tried the software in Ubuntu 20.04? I am sutck with an
       | old version of Ubuntu.
        
       ___________________________________________________________________
       (page generated 2020-10-06 23:00 UTC)