|
1 | 1 | Gebaar |
2 | 2 | ========= |
| 3 | +[](https://gitter.im/gebaar-libinput/community) |
3 | 4 |
|
4 | | -WM Independent Gesture Daemon for libinput |
| 5 | +WM Independent Touchpad Gesture Daemon for libinput |
5 | 6 |
|
6 | 7 | _Gebaar means Gesture in Dutch_ |
7 | 8 |
|
| 9 | +Run any command by simply gesturing on your touchpad! |
| 10 | + |
| 11 | +### What makes this different over the other implementations? |
| 12 | + |
| 13 | +[libinput-gestures](https://github.com/bulletmark/libinput-gestures) and [fusuma](https://github.com/iberianpig/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. |
| 14 | + |
| 15 | +Gebaar directly interfaces with libinput to receive and react to the events. |
| 16 | +This is more stable, faster, and more efficient as it **does not parse the output of a program** like the aforementioned projects do. |
| 17 | + |
| 18 | + |
| 19 | +### How to build and install |
| 20 | + |
| 21 | +1. Clone the repository via `git clone https://github.com/Coffee2CodeNL/gebaar-libinput` |
| 22 | +2. Check out the latest version (`git checkout v0.0.1`) |
| 23 | +3. Run `git submodule update --init` in the root folder |
| 24 | +4. Run `mkdir build && cd build` |
| 25 | +5. Run `cmake ..` |
| 26 | +6. Run `make -j$(nproc)` |
| 27 | +7. Run `sudo make install` to install |
| 28 | +8. Run `mkdir -p ~/.config/gebaar` |
| 29 | +9. Run `nano ~/.config/gebaar/gebaard.toml` (or vim, if you like it better) |
| 30 | +10. Add the snippet below to `gebaard.toml` |
| 31 | +11. Configure commands to run per direction |
| 32 | +12. Add yourself to the `input` group with `usermod -a -G input $USER` |
| 33 | +13. Run Gebaar via some startup file by adding `gebaard -b` to it |
| 34 | +14. Reboot and see the magic |
| 35 | + |
| 36 | +```toml |
| 37 | +[commands.swipe.three] |
| 38 | +up = "" |
| 39 | +down = "" |
| 40 | +left = "" |
| 41 | +right = "" |
| 42 | + |
| 43 | +[commands.swipe.four] |
| 44 | +up = "" |
| 45 | +down = "" |
| 46 | +left = "" |
| 47 | +right = "" |
| 48 | +``` |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | +### Examples |
| 53 | + |
| 54 | +**bspwm** |
| 55 | + |
| 56 | +_~/.config/gebaar/gebaard.toml_ |
| 57 | +```toml |
| 58 | +[commands.swipe.three] |
| 59 | +up = "bspc node -f north" |
| 60 | +down = "bspc node -f south" |
| 61 | +left = "bspc node -f west" |
| 62 | +right = "bspc node -f east" |
| 63 | + |
| 64 | +[commands.swipe.four] |
| 65 | +up = "rofi -show combi" |
| 66 | +down = "" |
| 67 | +left = "bspc desktop -f prev" |
| 68 | +right = "bspc desktop -f next" |
| 69 | +``` |
| 70 | + |
| 71 | +Add `gebaard -b` to `~/.config/bspwm/bspwmrc` |
| 72 | + |
8 | 73 | ### State of the project |
9 | 74 |
|
10 | 75 | - [x] Receiving swipe events from libinput |
11 | 76 | - [ ] Receiving pinch/zoom events from libinput |
12 | 77 | - [ ] Receiving rotation events from libinput |
13 | 78 | - [x] Converting libinput events to motions |
14 | | -- [ ] Running commands based on motions |
15 | | -- [ ] Refactor code to be up to Release standards, instead of testing-hell |
16 | | - |
17 | | -### Screenshots of debug/testing output |
| 79 | +- [x] Running commands based on motions |
| 80 | +- [x] Refactor code to be up to Release standards, instead of testing-hell |
18 | 81 |
|
19 | | - |
|
0 commit comments