Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/riley-martin/gestures
Fast touchpad gesture tool
https://github.com/riley-martin/gestures
linux rust touchpad touchpad-gestures touchpadgestures
Last synced: about 1 month ago
JSON representation
Fast touchpad gesture tool
- Host: GitHub
- URL: https://github.com/riley-martin/gestures
- Owner: riley-martin
- License: mit
- Created: 2022-11-22T17:53:52.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-04T15:58:29.000Z (8 months ago)
- Last Synced: 2024-10-08T17:28:57.566Z (3 months ago)
- Topics: linux, rust, touchpad, touchpad-gestures, touchpadgestures
- Language: Rust
- Homepage:
- Size: 1.5 MB
- Stars: 14
- Watchers: 1
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Gestures
[![crates.io](https://img.shields.io/crates/v/gestures.svg)](https://crates.io/crates/gestures)
[![dependency status](https://deps.rs/repo/github/riley-martin/gestures/status.svg)](https://deps.rs/repo/github/riley-martin/gestures)
## About
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`.## Features
`gestures` is able to handle libinput swipe events; not only vertical and horizontal but diagonal
as well.
- [x] Handle libinput events
- [x] Swipe events; vertical, horizontal and diagonal
- [x] Pinch events
- [x] Hold events
- [x] Rotate events
- [x] Continuous and one-shot events
- [x] Config file## Configuration
See [config.md](./config.md) for configuration instructions.## Installation
### Platforms
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.
### Nix
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`.### Dependencies
You may need to install `libudev` and `libinput`, or their equivalant for your distro, and possibly the `dev` versions as well.### With Cargo
If you have cargo installed, simply use `cargo install gestures`### Manual installation
- 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
### Autostart
#### Compositor/WM
You can start `gestures` in your `.xinitrc` or other startup files (like sway config file, for example)#### Systemd
Drop [examples/gestures.service](./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`.#### Other init systems
I haven't used any other init systems, but the service is quite simple so it should be easy to modify
for other systems.## Alternatives
Here are some alternatives with similar features.- [libinput-gestures](https://github.com/bulletmark/libinput-gestures)
Parses output of `libinput debug-events` rather than using libinput api.
- [gebaar](https://github.com/Coffee2CodeNL/gebaar-libinput)
Only supports swipe gestures
- [gebaar-libinput-fork](https://github.com/osleg/gebaar-libinput-fork)
Fork of gebaar which supports other gestures
- [fusuma](https://github.com/iberianpig/fusuma)
Also parses `libinput debug-events` output