I recently bought a Dell Precision 5530 with Ubuntu and noticed that the trackpad scrolling worked much better than on my Thinkpad 470, both running Ubuntu 18.04 (and now 18.10). Both use libinput but on the Dell kinetic/inertia scrolling works great. I realize that libinput doesn't implement kinetic scrolling by design, but somehow it works very well on Dell. When I install vanilla Ubuntu 18.xx on dell, touchpad works like crap; if I install their 16.04 image and then upgrade, touchpad works great. There are a few other little things that work better with Dell's image, such as better fan control/power management, etc. I'm a bit of a Linux noob, so I'm trying to figure out where the magic sauce can be. I would like to figure out how to get the touchpad working as well with stock image, and possibly replicate it on the Thinkpad as well. I'd appreciate if someone could point me in the direction I need to be looking at. Thank you Yuriy
-
2For people like me who want to get their non-tech friends and family using Ubuntu, it's this kind of user-interface thing that really makes the difference. See also this other touchpad weirdness– LondonRobFeb 1, 2019 at 13:59
-
Well, I ended up returning the laptop after 2 weeks of fighting with random touchpad bugs, fan control, wake from sleep issues and randomly poor battery life. It's a shame though - the machine was really good and Linux actually fits what I do better. I really like the security and privacy, but a laptop is a vital tool for and I need it to "just work"– Yuriy K.Feb 2, 2019 at 18:42
-
I agree. It's hard to convince people that Ubuntu is good if stuff like fan and touchpad don't just work out the box.– LondonRobFeb 4, 2019 at 16:22
1 Answer
Probably the 16.04 is using the deprecated synaptics driver. This one have implemented kinetic scrolling. This link in particular has a link to this bugreport. TL;DR of which: kinetic scrolling being implemented in synaptics turned out to be a design error. It led to nasty bugs, such as that if you scrolled, and pressed Ctrl before scroll stopped, the app you're scrolling would trigger zoom-in or zoom-out. It's because kinetic scrolling is implemented by continuous sending of scrolling events, and the app have no way to differ real and fake scroll events.
Worse: the proper way to implement that is in GUI toolkits, i.e. GTK+ and Qt (and maybe EFL, though it's little known outside of Enlightement Desktop Environment), but if you have kinetic scrolling in driver + kinetic scrolling in toolkit — you can expect this to end up in mess.
GTK+ have implemented kinetic scrolling, e.g. it works for me in evince
app, version 3.30 for evince, and 3.24 for GTK.
Qt I don't know. I found some blog-post saying that kinetic scrolling was implemented for everything in 2009, but I can't reproduce it in Okular, nor Qutebrowser, nor Kate, so it's definitely untrue.