Update: Firefox has announced that gesture support in Linux is now enabled by default in Firefox Nightly, and planned for release as part of Firefox 88. Thanks for your support everyone! 🎉
Time flies when you're crafting open source...looks like it's already been 4 months since our previous update in October, whoops. Thankfully our developer Povilas can report ample progress. The most exciting update is that the team from Firefox reached out to us in November and they've since built a release that improves gesture support! 🚀 Given that Firefox was our most upvoted of all Linux apps, this is big. A full accountability report of our progress, in Firefox and beyond, is provided on a per-project basis in the Project Update section below.
If you're satisfied with the progress we're making, would you consider joining our Github Sponsors Linux Touchpad Like a Mac project? The most affordable tier is just $5/month. The number of people keeping this project going is tiny (currently 129 supporters), but this small group of passionate Linux users are creating meaningful forward progress to improve the touchpad ecosystem for hundreds of thousands of Linux touchpad users. For those who don't want to rely on a future beholden to Apple, we hope that you'll consider supporting us? We could be getting more done if we had 250 supporters. 📈
During the previous project update on October we ran a poll to gather information on what applications are the most important. We got a total of 125 submissions with at least one application and converted that to 317 votes (see the list at the end of the blog post).
The results were very clear on what we need to work on. We describe the current status of touchpad gesture support and our plans for each application below:
We have great news: the touchpad gesture support is already available in Firefox Nightly behind a hidden preference switch. This would be an extremely challenging task to implement ourselves, so we're very glad that Mozilla has decided to spend resources to on their Linux port. This will currently only work on Wayland as our previous work on X server support in GTK is still in the progress of being merged and released.
We don't have any updates here. Touchpad gestures already work on Wayland and for X server, we are blocked on our existing touchpad-related work being merged the upstream repositories of the X server.
Touchpad gesture support in KWin depends on having touchpad gestures available in Qt. Here we also have had great success: initial touchpad gesture support in Qt has been already implemented for Wayland. Currently we are in discussions with the core developers of Qt in how to best expose the new events, as Qt currently does not support full set of the needed touchpad gestures on any of its platforms. It is likely that for some time Linux will have the best touchpad gesture support among all platforms that Qt supports, which would be quite an achievement as usually it's the other way round.
Unfortunately we have decided that the benefit versus cost is too small in this case. It would take a lot of time to understand the codebase of such large size in order to meaningfully contribute to it.
Here we also have great news: basic support for touchpad gesture support for zooming in/out has been implemented. Currently it works only on Wayland and will work on X server as soon as our previous work on touchpad gestures in X server is merged and released. This is just the start, we are planning to extend gesture support to more workflows.
Touchpad gestures in the X server were basically done already at the time we did the last status update at October last year. Since then, effort has been spent to bring this code into the X server. Previously broken unit test framework has been fixed, so the X server now has working tests for the input subsystem again which allows us to convince the reviewers that our implementation of gestures actually works. 3 bugs in the touch input handling unrelated to gestures have been fixed along the way.
Currently our focus is on getting our previous work to be reviewed, merged and released. The focus is split among roughly 3 projects: Qt, Gimp and X server. A lot of code has already been written, but needs to be reviewed and merged. Our current plan is to finish and polish touchpad gesture support in these 3 projects before starting expanding our focus into extra applications.
Just as an illustration of how much development work there has been done and how much remains: 22 pull requests representing 4498 new lines and 2084 deleted lines have been already merged; additionally, 12 pull requests representing 6399 new lines and 177 removed lines are in review. You can see all the details in this spreadsheet.
The list below shows the top 30 applications from the poll we've organized in the previous status update. Together we specify the toolkit being used which allows us to gauge the amount of effort needed to implement gesture support. If an application uses a widget toolkit then the most complex parts are handled already and the amount of effort is much lower compared than if custom toolkit is being used.
Firefox, 77 votes, Gtk toolkit
Mutter, 30 votes, Gtk toolkit
KWin/Plasma, 26 votes, Qt toolkit
chrome/chromium, 22 votes, Gtk toolkit
Gimp, 17 votes, Gtk toolkit
Evince/gnome document viewer, 12 votes, Gtk toolkit
Sway, 10 votes
Libreoffice, 9 custom toolkit
Inkscape, 7 votes, Gtk toolkit
Nautilus, 6 votes, Gtk toolkit
Okular, 6 votes, Qt toolkit
Blender, 5 votes, custom toolkit
Alacritty, 4 votes, custom toolkit
Digikam, 4 votes, Qt toolkit
Dolphin, 4 votes, Qt toolkit
Emacs, 4 votes, Gtk toolkit
Eog/gnome image viewer, 4 votes, Gtk toolkit
Enome terminal, 4 votes, Gtk toolkit
Krita, 4 votes, Qt toolkit
Thunderbird , 4 votes, Gtk toolkit
Vscode, 4 votes, Gtk toolkit
Compiz, 3 votes, Gtk toolkit
Qutebrowser, 3 votes, Qt toolkit
Brave, 2 votes, Gtk toolkit
Darktabl, 2 votes, Gtk toolkit
Gnome-maps, 2 votes, Gtk toolkit
Gwenview, 2 votes, Qt toolkit
I3wm, 2 votes
Kate, 2 votes, Qt toolkit
Mpv, 2 votes, custom toolkit
The rest of applications got a total of 34 votes.
As we approach these milestones for better gesture support, we'd like to re-open the discussion for other types of Linux touchpad issues you find problematic? What aspect of the macOS touchpad do you feel is most sorely lacking from your Linux touchpad experience? Drop a line in the comments below, or in the comments for the Hacker News story we'll post for this. Thank you! 🙏