This is a program for intercepting touchpad gestures and executing commands based on them.
Unlike some alternatives, it directly uses the libinput api rather than parsing the output
of libinput debug-events
.
gestures
is able to handle libinput swipe events; not only vertical and horizontal but diagonal
as well.
- Handle libinput events
- Swipe events; vertical, horizontal and diagonal
- Pinch events
- Hold events
- Rotate events
- Continuous and one-shot events
- Config file
See config.md for configuration instructions.
Linux. The testing workflow runs on Ubuntu and I test it myself on Artix Linux Nixos, but it should work on any distro if it uses the
libinput
touchpad driver rather than the older synaptics
driver.
Note: If your DE/WM has its own touchpad gestures system, it may need to be disabled to
prevent conflicts.
If you are using flakes, simply add gestures.url = "github:riley-martin/gestures";
to your flake inputs
and add inputs.gestures.packages.${system}.gestures
to your home.packages
or environment.systemPackages
. You can also create a service in
systemd.user.services
.
You may need to install libudev
and libinput
, or their equivalant for your distro, and possibly the dev
versions as well.
If you have cargo installed, simply use cargo install gestures
-
Clone the repo
git clone https://github.com/riley-martin/gestures && cd gestures
-
Build
cargo build --release
-
Copy
./target/release/gestures
to a convenient place and execute it
You can start gestures
in your .xinitrc
or other startup files (like sway config file, for example)
Drop examples/gestures.service into ~/.config/systemd/user/gestures.service
and modify it for your system (mainly the "$HOME" environment variable and the ExecStart
will need changed).
To have it start automatically, run systemctl --user enable --now gestures.service
.
I haven't used any other init systems, but the service is quite simple so it should be easy to modify for other systems.
Here are some alternatives with similar features.
- libinput-gestures
Parses output of
libinput debug-events
rather than using libinput api. - gebaar Only supports swipe gestures
- gebaar-libinput-fork Fork of gebaar which supports other gestures
- fusuma
Also parses
libinput debug-events
output