12 ms·
Q3 Linux touchpad update: Multitouch gesture test packages now ready
- seltzered_ 6y agoThanks 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 6y agoCurrently 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 6y agoWhoops, I forgot the link to the results of the poll: [1]: https://bill.harding.blog/2020/06/22/linux-touchpad-project-update-progress-on-multitouch/ https://bill.harding.blog/2020/06/22/linux-touchpad-project-...
- Angeo34 6y agoI only read about GNOME what's with Plasma?
- p12tic 6y agoPovilas 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 6y ago> Please vote in the poll so that we know this is important to you. The poll: :) https://www.gitclear.com/polls/linux_multitouch_apps https://www.gitclear.com/polls/linux_multitouch_apps
- solarkraft 6y agoI'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).
- auraham 6y agoHas anyone tried the software in Ubuntu 20.04? I am sutck with an old version of Ubuntu.
- dastx 6y agoI 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!
- lars_francke 6y agoSame here. I considered donating but assumed the project was dead because there's nothing to see (nothing easy to find anyway). I assume you'd get more donations if you had regular updates like this.
- ktm5j 6y agoCool! 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 https://github.com/bulletmark/libinput-gestures
- Fnoord 6y agoI'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.
- ktm5j 6y agoYes I agree about the smoothness issues, however you can really improve things by adding the line `timeout 0` to your ~/.config/libinput-gestures.conf to set the threshold to the lowest setting. The comments here are from the end of their example config https://github.com/bulletmark/libinput-gestures/blob/master/libinput-gestures.conf https://github.com/bulletmark/libinput-gestures/blob/master/...: ############################################################################### # You can set a timeout on gestures from start to end. The default is # the value commented below. It can be any value in float secs >= 0. # 0 = no timeout. E.g. set it to 2 secs with "timeout 2". timeout 0
- duhi88 6y agoHave you tried this with Apple's Magic Trackpad or al=ny other bluetooth trackpads?
- rhodysurf 6y agoI 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 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 6y agoDoes this make the animation follow the fingers? I think I tried this a while back and was disappointed :(
- rhodysurf 6y agoSadly, 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
- juancampa 6y agoFor 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 6y ago> 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…
- acabal 6y agoAgreed. 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.
- 6y ago
- yepthatsreality 6y agoIt’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.
- ece 6y agoThe amount of work going into supporting x hardware on Linux is just amazing.
- shmerl 6y agoWhat is the situation with Wacom drawing tablets under Wayland compositors? Do they work now?
- curt15 6y agoThey have worked under Gnome wayland for while. I don't know about KDE though.
- Polylactic_acid 6y agoSeems to work fine for me. On gnome it actually creates a second pointer separate pointer from the mouse one.
- pkulak 6y agoI 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?
- jeffbee 6y agoWhy does ChromeOS have all of the stuff that this project claims to be developing? Are they using proprietary touchpad drivers?
- deleted 6y ago[deleted]
- laksdjfkasljdf 6y agoI 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 6y agoThe first post's discussion is here: https://news.ycombinator.com/item?id=17547817 https://news.ycombinator.com/item?id=17547817
- listennexttime 6y agoIt'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 6y agoPovilas 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!
- ComputerGuru 6y agoI'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 https://www.microsoft.com/buxtoncollection/detail.aspx?id=60 [1]: https://www.kernel.org/doc/html/v4.18/input/multi-touch-protocol.html https://www.kernel.org/doc/html/v4.18/input/multi-touch-prot... [2]: https://github.com/mqudsi/syngesture https://github.com/mqudsi/syngesture
- listennexttime 6y agoOh 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 https://github.com/Coffee2CodeNL/gebaar-libinput
- kilo_bravo_3 6y agoIs 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?
- nmstoker 6y agoI 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 6y ago> 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. (edit: never mind, this is not possible apparently, GitHub charges you for a whole year) 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.
- p12tic 6y agoHey, thanks for interest in donating to the project. I'm Povilas, the developer from the linked blog post. If the donation is less than $100 you could setup a monthly donation on GitHub and then cancel it after the first payment. Otherwise, you can contact me at "povilas@radix.lt". To verify the authenticity of this email address you can view my GitHub profile at https://github.com/p12tic https://github.com/p12tic, or check out https://github.com/p12tic/xorg-xorgproto/tree/p12-gestures https://github.com/p12tic/xorg-xorgproto/tree/p12-gestures branch and verify the author email of the last commit in the branch.
- sneak 6y ago
- bb88 6y ago> not yet released on Gtk/X11 . No Wayland or X11 gesture support in QtWidgets , wxWidgets , Tck/Tk , FLTK , EFL This is why the web has won. Chrome on Linux is the same as Chrome on Windows.
- sly010 6y agoOther than smooth scrolling :)
- ZeroCool2u 6y agoFor what it's worth, I was very critical after the last update due to the lack of focus on Wayland. So much so, that I actually pulled my funding. However, Povilas was kind enough to come into the comments and explain their reasoning more thoroughly and managed to change my mind. Today I restarted my, decidedly small, contribution. Even if I'm frustrated with the amount of work there is to do, I'd rather the project be thorough and really attempt to be a unifying solution to this problem.