Hacker News new | ask | show | jobs
by thinkbud 2181 days ago
Honestly the write up seems ok but does not evoke optimism to me. I can't help it but to me macOS and it's multifinger gesture support is not about how many gestures it supports or which actions it supports, but the fluidity of the execution of gestures with animations.

When you start pinching/unpinching fingers apart, the zoom happens in sync with your finger spacing. As soon as you start pinching, the application seems to receive with the event stream all the x and y coordinates so that pan and zoom can be done simultaneously in lockstep with the finger positions and spacing on the touch pad.

Similarly when you pull 2 or 3 fingers from the side to e.g. go back a page, the reveal animation starts, or an arrow appears, and you can change your mind mid gesture by reversing the finger movement and the animation feedback is helpful enough to tell you that indeed the gesture will be canceled.

I honestly hope that the developers interested in improving this in libinput and stack have the same understanding that gestures are not about recognizing the one-off side/pinch movement with a couple of fingers, but about low latency fluid interaction of fingers with visual animation feedback tightly coupled. The other (one-off) type of gestures where you swipe your three fingers to the left and then after a sampling interval the framework or stack receives a ThreeFingersLeft swipe event (with length or time or xy values) is IMO a very underwhelming experience.

7 comments

I’m a long time MBP user who’s switched to Linux on a thinkpad recently, after the butterfly switch debacle.

I think the one gesture I used more than any other on my MBP was the 4-finger swipe left and right to switch workspaces. I would have a fullscreen iterm/tmux/vim session in each workspace - each tmux is a separate project with multiple panes and windows. I can't really bind a keyboard shortcut to switch workspaces because I have so many shortcuts already bound to tmux/vim/coc and other vim extensions, which is why it's so nice to be able to switch workspaces with a touchpad gesture. I could flip back and forth between workspaces effortlessly, without losing precious key shortcuts for development. It’s a fantastic dev setup.

Fedora 32 seems to support this now! I don’t think that F31 did, but on F32 I can do the 4 finger swipe to switch workspaces, and on my thinkpad it works pretty much as smoothly and as interactively as it did on my MBP - swipe slowly and the screen slides following your fingers, change direction in the middle of the gesture and the screen slides back - the whole ‘stream input events and the screen is an extension of your fingers’ as you describe.

The Linux desktop is getting a lot better. I don’t think I would ever have switched without Wayland and now they’re getting gestures right.

Three finger drag is the killer one for me. Once you're used to it, it's difficult to go back.
Three finger drag is also a killer feature for me, and unfortunately that very feature highlights a key difference in the way macOS and the Linux desktop are developed [1].

To get three-finger drag to work, you need a gesture right? So you report the issue to libinput. Libinput looks at it and says "well, this is more than just a gesture", and says "this should be implemented in the compositor". Now, this is desktop Linux, and now you need to get at least three compositor projects to agree that 1) yes it's their problem, it isn't a libinput problem and 2) to actually fix it in their compositor. Sigh. And what's more - this isn't even the end of the problem! This is just for dragging windows! Now you also need to get this for arbitrary drag and drop actions like moving text or stuff in your file manager, so now you also need fixes in your UI toolkits. There's at least two for that you'll need as well. Pile on top there that most maintainers in this web have never extensively used a Mac, and don't even understand why this is something people want in the first place. This kind of stuff is very hard to fix on the free desktop.

If the same discussion happens for macOS, at worst some manager who is the boss of both of the squabbling teams will get mad, tells them that the UX here is more important than your technical squabbles and orders them to sit down and fix it. To be clear: I completely understand how these layers of abstraction work on the free desktop, and this is much harder to fix. But I sure wish there was a stronger incentive for these abstraction layers to fix these cross cutting concerns.

I have some hopes pinned on recent progress for this [2].

[1]: https://bugs.freedesktop.org/show_bug.cgi?id=89999#c20

[2]: https://gitlab.freedesktop.org/libinput/libinput/-/issues/29...

I think a lot of this is especially bad right now because we're trying to unwind a lot of the bad system architecture that was imposed by X. A lot of maintainers are finding that they need to do things themselves that X used to do for them.

There are other issues on the horizon - if input preferences are no longer held in X (because that's not libinput's job and it shouldn't be) but are pushed up to gtk/glib/qt/kde, does that mean that whenever I use a kde app in gnome that it uses some random key-shortcut defaults rather than what's in my gsettings? That seems to be the case right now.

Also, I owned a multitude of MBPs through the years, from the first Intel Al-books around 2005 through to my last MBP, a 2015 model. I was heavily invested in the platform because it seemed like that manager you describe had the same sense of taste and the same engineering intuitions as I do. Well, that all ended with the butterfly-switch keyboard. It was a sad, angry, bitter divorce, but I left Apple and will probably never buy another MBP. The butterfly switches are gone, but I know now that that manager lacks the integrity and professionalism to manage the platform. It was more important to fluff Johnny Ive's ego.

That opinionated manager can giveth, and she can taketh away.

> If the same discussion happens on macOS, at worst some manager who is the boss of both of the squabbling teams will get mad, tells them that the UX here is more important than your technical squabbles and orders them to sit down and fix it.

That strikes me as rather optimistic. I mean, yes, in theory a company does have enough overarching management that it can force coherent action, but... the "Microsoft" in https://laughingsquid.com/organizational-charts-for-tech-com... is a thing. Maybe Apple is still sufficiently centrally-driven that it works there? Historical accounts certainly make it seem like they've managed their share of infighting, but I suppose by the time they went to market it tended to be dealt with.

Apple has had consistent three finger drag since what, 2012? At least from this perspective they seem to be doing alright.
Agreed. It strikes me as odd that Apple hides this ability deep in the Accessibility settings.
It wasn't always relegated there, and had a more prominent place right in the trackpad settings.

Probably related: right around when the setting was moved deep into accessibility, Finder started having issues with three-finger drag.

Because it changes the gestures for workspace switching / expose. They are no longer three-finger, but four-finger, thus more difficult.

I'm in the group that gladly foregoes three finger drag, if it means we get to keep other three finger gestures.

When did switching workspaces become four-finger? Meaning you can't use the three-finger option? Catalina? I have a MacBook Pro on Mojave and the trackpad accepts three-finger for the gesture of switching workspaces and the Magic Mouse has an option for two-finger.
When you enable three finger drag, all the other gestures will switch to four finger.

Disabling the tree finger drag is not enough to return everything back, you have to configure that in separate control panel.

Might just be that most general users don't have a need for that?
Same here. When I first saw that feature 2014 on my MBP back then I thought Linux will have that soon. Man was I wrong....But actually it should work, as I can e.g. tap 3 fingers on a link now here on a XPS to open it in a new tab.
I used it for a while and once again I keep everything on one screen and use command tab. It isn't difficult to go back.
It's not just moving windows around. It's all drag operations. Highlighting text in a webpage or console, dragging files between finder and other apps, dragging UI controls like sliders.
Isn't it 3 finger?

As someone who installed Linux on a computer for the first time 22 years ago (Slackware via floppies!), but have never used it full time for more than a few days before I'd jump back to Windows/Mac, I'm amazed more every year how "we're almost there" is a recurring theme.

It's a dropdown in Preferences. I have mine set to 3 fingers because my pinky is short compared to my other fingers. My wife has hers set to 4 fingers.

I forget which is the default.

I don't recall changing it when I got a new machine in December, but with so much stored in iCloud, I'm uncertain if that's default or not.
I'm amazed more every years how "we're almost there" is a recurring theme.

Yeah, but I think a lot of that was because so much dev effort has been wasted trying to make X11 suck less, and building infrastructure around X11. Between Wayland, libinput, and freedesktop, it feels like we're finally moving forward.

I don't think that the linux desktop will ever be 'mainstream' - there are too many issues with commercial software - but at least it can be a pleasant experience for the technically-inclined.

The 4-finger swipe is responsible for a huge number of family tech support calls. "Dad, all my windows are gone again!". Pretty much a constant theme.
Imagine if there was an undo buffer for OS events and one could just say, "reset workspace" and boom, everything is fixed. PriorArt.
Why not turn it off for them then?
It turns out that kids like to go into settings and click every button and change every thing. I don't really mind. I pretend they are learning something about computers.
They are! They’re exploring and being curious. This is one of the most important things to encourage. I’m so thankful my parents let me disassemble the VCR, computers, other people’s computers, etc. I did end up learning a lot and the curiosity has served me well.
I do this so much I just assign Ctrl+1/2/3/4 to switch instantly to desktops so I'm not having to move my hands so much.
I have implemented that gesture in Wayfire last year :) but yeah GNOME already had it for quite some time. KDE Plasma too, I think.
As someone who used MacBook for ~5 years I miss touchpad especially for switching between workspaces.

The closest alternative (for me) on Ubuntu (Gnome) I've come up with is Super+J/K for switching between workspaces and, as a bonus, moving windows between workspaces with Super+Shift+J/K. Feels almost as productive as on MacBook with touchpad

Have you tried this? https://github.com/bulletmark/libinput-gestures

I'm using three fingers swap for switching between workspaces. But I agree with the comment above, the animation is key.

If you use Wayland on Ubuntu (Gnome), the exact gesture you're talking about already exists, it's just vertical instead of horizontal. It's actually my most used gesture personally.
It worked on Fedora 31, but they did noticeably improvment in F32. If you are fun of Wayland I recommend to check Sway.
As someone using sway on Arch, is there a way to get these gestures? Or is it something specific to Fedora?
Should be control arrow key left or right if I remember correctly
Povilas from linked article here. The design of how libinput handles gestures is exactly like you describe - the application will get a Start event when a gesture is identified, an Update event when finger position change and an End event when the gesture completes. This will allow to implement the macOS gestures in the end. There are more complex details of course, but the basic point stands.
Hey thanks for all of your work on libinput. A lot of us Mac refugees are really happy to see how much better things are with the linux userspace now. You're making a lot of people very happy.

Crystal-clear graphics with Wayland, great new hardware available from the two big linux-friendly laptop makers (Lenovo+Dell), great touchpad software support with libinput... it's a great time to be on desktop linux!

I think you should thank Peter Hutterer for his contributions to libinput. I'm just a random developer who loves complex problems and free software and was also interested in trying to improve Linux touchpad support :-)
Thanks for responding directly. I had the same question in mind as the post you replied to, so I'm happy to hear the right goal is being set.
Haha, very true. At one point there was this perfection in the Ubuntu desktop where I could do wonderful things like pick up a window with the pointer and do keyboard shortcuts to move workspaces and the window would travel with me and stuff like that. It felt so natural that I didn't realize I was doing it till one day I upgraded and it went away. I suspect it was some emergent property of the subsystems that wasn't specifically written for because I don't think it exists anymore.

OS X is like that. So many of the gestures are so natural that you just do them without thinking and I only notice when they're gone.

Another nice aspect of this gesture that is easy to overlook is used in the scenario where you have two workspaces available but you are trying to eg. swipe left (to move right) when you are already on the rightmost workspace.

The contents of the screen will slide a few hundred pixels left, but since there is no workspace on the right to take their place, what slides in is just empty black space - which then immediately bounces back out and returns you to your screen.

The existence of this behavior very clearly communicates to the user that their gesture was received correctly but cannot be successful for some reason - far more eloquent than any dialog box with printed words or any sound effect.

Not just the fluidity of the gestures, but the overall resolution and responsiveness of the device. If I had to pick my top requirements for a trackpad, I'd pick:

1. Latency: If I drag my finger back and forth across the trackpad, I expect the mouse to match exactly where my finger is--not where it was 50+ms ago.

2. Resolution/Acceleration: I expect to be able to navigate my entire screen without lifting my finger and repositioning it. Further, I expect to be able to move the mouse one pixel by making a very small move on the trackpad (or by rolling my finger a little).

After those "table stakes" items are solved, then let's talk about adding gestures.

> As soon as you start pinching, the application seems to receive with the event stream all the x and y coordinates so that pan and zoom can be done simultaneously in lockstep with the finger positions and spacing on the touch pad.

I just tried this in Preview, Safari, and Chrome and none seem to actually do this.

I have experienced none of the fluidity you mentioned.

The UI on macOS to me feels frustratingly slow compared to XFCE. I've tried to disable animations, reduce motion and all the tweaks that can make it a little bit faster, but it remains being unacceptably sluggish.

And please abstain from downvoting unless you've at least tried XFCE and macOS enough in order to make an objective comparison.

The fluidity is about keeping activity on the screen tightly in sync with motion on the trackpad and having zero or no unexpected behavior or jank when e.g. reversing a motion partway through to undo it (say, starting to slide three fingers up to expose all your windows, stopping to peak at something, then sliding them back down to put everything back where it was—you can even stop in the middle of it to make the windows do a little dance and nothing goes badly wrong or far out of sync). It nails that stuff even on my aging low-specs-even-at-the-time 2013 MBP. It's not so much about raw UI speed which, yes, light Linux/BSD window managers still hold the crown for (outside dead or niche operating systems like BeOS and QNX or maybe even old versions of Windows, which actually hold the crown)
BeOS lives on in Haiku (https://www.haiku-os.org/) which is both still alive, and blows most "light Linux window managers" out of the water in UI speed. :)
I have a VM with Haiku and I can confirm it is indeed very fast.

I am no Haiku expert but the Haiku's window manager does not support window composition and does not use GPU acceleration, right? It is also not modular and cannot be replaced.

You can disable composition on XFWM and make it run a little faster on lower spec hardware. You can also use a WM like i3, Windowmaker or Enlightment.

IMO, XFWM is the right balance between functionality and performance.

The whole point of Haiku is a holistic approach to system design, so no, you cannot easily replace the window manager. You can, however, write "decorator" plugins which draw different window borders, write shortcut plugins for "tiling", etc.

It indeed does not use GPU acceleration; Haiku as a whole does not have 3D drivers either (but there are plans.)

It’s honestly pretty bad on their slower and/or older models - they’re pretty clearly developing for what their devs have, which is their higher-spec machines. If you go into an Apple Store some time and play with their higher-spec machines it’s pretty good.
True. But what happens when you run XFCE in one of those higher spec machines? the advantage remains.
Perhaps this is a UI preference difference. I like the animated views on OS X and the speed seems acceptable but there are definitely browser apps (like the Chase website) where things animate in slowly and I get frustrated. So perhaps we're just differently placed on the curve.
Does it? There's a limit to how "snappy" XFCE gets.

I think this is the "animations vs no animations" argument, maybe - I like them as they give context to my actions, but I imagine some people don't.

For nice widget animations you can install a GTK engine/theme. There is a deluge of GTK themes you can choose from if that is your thing.

There are many themes inspired on macOS if you are aiming for that kind of look.

http://reddit.com/r/unixporn has a lot of that stuff. You can just go and grab someone else's configuration and apply it to your system.

If you are aiming for window effects with no regards for performance, try Compiz. You can add as many window effects as you want.

Sure, but when you add those animations to your setup, do you perceive it as being slower?