Skip to content

mpiannucci/gnome-shell-extended-gestures

Repository files navigation

gnome-shell-extended-gestures

Provides extended touchpad gesture functionality and configuration to the GNOME desktop.

https://extensions.gnome.org/extension/1253/extended-gestures/

gesture-settings

Background

By defualt, GNOME uses libinput to detect touchpad gestures as they are performed by the user. However, it is still fresh and the only gesture detected and acted on out of the box is four finger vertical swipes. When it sees this gesture, it switches workspaces for the user, much like macOS is famous for doing by default. I recently found libinput-gestures which allows you configure other gestures seen by libinput. There are some quirks though and I thought I could make something that works more integrated with GNOME. So I made this extension which lets you enable and configure other gestures such as three finger swipes.

What Does It Allow Me To Do

For now, it allows the user the configure three finger horizontal and vertical gestures to perform a choice of actions supplied through the extension settings in gnome-tweak-tool. It should work on most modern laptops with multitouch trackpads. It has been tested on many modern devices. Please see hardware for more information!.

Adjusting the sensitivity

There is now a setting for adjusting the sensitivity which helps expand the usefullness to more hardware. Using the settings dialog you can make the gestures more sensitive by increasing the value (>0) or less sensitive by decreasing the value (<0). Feel free to share the values that work for you in the hardware list.

Current Limitations

Currently there are a few limitations so far that you should be aware of:

  • Actions are currently limited to things baked into the GNOME shell because this extension is basically sandboxed there. So currenlty setting an action like "swipe to go forward or back in the browser" is not currently possible.
  • Pinch gestures are not handled or configured. Eventually I want to add in support for all pinching gestures but I have not done so yet. See issue #3.
  • Four finger swipe gestures are captured by defualt by GNOME shell so they can not be handled by this extension. However, eventually four finger pinches should be able to be handled I believe.
  • It only works with GNOME Wayland 3.26+. See the releases for a working 3.22 and 3.24 version.
  • It should work any distro that used GNOME Wayland 3.26 and libinput. Confirmed working with Arch Linux and Ubuntu GNOME 17.04
  • It only handles touchpad gestures, not touchscreen gestures because those are much better supported in GNOME out of the box.

Requirements

  • GNOME 3.26+
  • Wayland
  • libinput

Installation

From the GNOME Extensions Store

Get it here

Manually

  1. Clone the repo a in your ~/.local/share/gnome-shell/extensions folder like so. Then log out and back in to your session and you should be able to enable the extension in Tweak Tool

    git clone https://github.com/mpiannucci/gnome-shell-extended-gestures
    cp -r gnome-shell-extended-gestures/[email protected] ~/.local/share/gnome-shell/extensions

or

  1. Clone or download the repo where ever you would like, zip it up and install it manually through Tweak Tool

    git clone https://github.com/mpiannucci/gnome-shell-extended-gestures
    cd gnome-shell-extended-gestures
    ./package.sh

Troubleshooting

If it is not working, check the following. If it still does not work, please post an issue detailing your laptop model, operating system and gnome shell version

  • Make sure you are running a wayland session
  • Make sure your trackpad supports multitouch
  • Make sure you are using GNOME 3.26 or above

If you are confident that you have satisfied those three things, try and swipe vertically up AND down with four fingers. This gesture is buiult into GNOME by default and it should switch workspace (make sure workspace switching is enabled) when the gesture occurs. If that works and the extension still does not, please file an issue so I can look into it!!

Other known issues to check

  • If libinput-gestures is installed, uninstall it and reload your session. It should work after that.

License

GPL V3