I'm still around but haven't been able to work on this project due to health reasons, I hope to return to this project one day and fix all issues
WM Independent Touchpad Gesture Daemon for libinput
Gebaar means Gesture in Dutch
Run any command by simply gesturing on your touchpad!
libinput-gestures and fusuma both parse the output of the shell command libinput debug-events
which is an unstable API and the output just keeps coming, so it'll eat (some) RAM.
Gebaar directly interfaces with libinput to receive and react to the events.
This is more stable, faster, and more efficient as it does not parse the output of a program like the aforementioned projects do.
- Clone the repository via
git clone https://github.com/Coffee2CodeNL/gebaar-libinput
- Check out the latest version (
git checkout v0.0.5
) - Run
git submodule update --init
in the root folder - Run
mkdir build && cd build
- Run
cmake ..
- Run
make -j$(nproc)
- Run
sudo make install
to install - Run
mkdir -p ~/.config/gebaar
- Run
nano ~/.config/gebaar/gebaard.toml
(or vim, if you like it better) - Add the snippet below to
gebaard.toml
- Configure commands to run per direction
- Add yourself to the
input
group withusermod -a -G input $USER
- Run Gebaar via some startup file by adding
gebaard -b
to it - Reboot and see the magic
[commands.swipe.three]
left_up = ""
right_up = ""
up = ""
left_down = ""
right_down = ""
down = ""
left = ""
right = ""
[commands.swipe.four]
left_up = ""
right_up = ""
up = ""
left_down = ""
right_down = ""
down = ""
left = ""
right = ""
bspwm
~/.config/gebaar/gebaard.toml
[commands.swipe.three]
left_up = ""
right_up = ""
up = "bspc node -f north"
left_down = ""
right_down = ""
down = "bspc node -f south"
left = "bspc node -f west"
right = "bspc node -f east"
[commands.swipe.four]
left_up = ""
right_up = ""
up = "rofi -show combi"
left_down = ""
right_down = ""
down = ""
left = "bspc desktop -f prev"
right = "bspc desktop -f next"
Add gebaard -b
to ~/.config/bspwm/bspwmrc
- Receiving swipe events from libinput
- Receiving pinch/zoom events from libinput
- Receiving rotation events from libinput
- Converting libinput events to motions
- Running commands based on motions
- Refactor code to be up to Release standards, instead of testing-hell