From 3cceef39a96367f644fe12074e5490fe8e159bbf Mon Sep 17 00:00:00 2001 From: Rico Tiongson Date: Sat, 2 May 2020 02:48:21 +0800 Subject: [PATCH] Update README --- README.md | 216 +++++++++++++++++++++++++------ config/comfortable-swipe.desktop | 2 +- 2 files changed, 175 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 2e7d4bd..3038380 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures 1. **_Important_**: After inputing your `sudo` password, log out then log back in - ## List of Commands 1. Start the Program @@ -70,13 +69,6 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures comfortable-swipe autostart [on|off|toggle|status|path] ``` -1. Help / version - - ``` - comfortable-swipe --help - comfortable-swipe --version - ``` - 1. List configurations ```bash @@ -93,6 +85,7 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures ``` 1. Get config (examples) + ```bash $ comfortable-swipe left3 ctrl+alt+Right @@ -136,17 +129,17 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures ``` 1. Delete config + ```bash $ comfortable-swipe config delete mouse3 - Deleted: - left3 = ctrl+super+Right + mouse3 = button1 ``` 1. List all cofigurations + ```bash $ comfortable-swipe config list - threshold = 1.0 left4 = ctrl+super+shift+Right right3 = ctrl+super+Left @@ -160,18 +153,32 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures ``` 1. Show path to config file: + ```bash $ comfortable-swipe config path - /home/hikari9/.config/comfortable-swipe.conf ``` +1. (Advanced) Show output with `--attach` + + Example output of 3-finger left, 4-finger left, 3-finger right, 3-finger up: + + ```bash + $ comfortable-swipe start --attach + SWIPE left3 + SWIPE left4 + SWIPE right3 + SWIPE up3 + ... + ``` + + You can also pass `--bare` to attach without actually swiping. + ## Swipe Gesture Configurations The default configuration file is located at `~/.config/comfortable-swipe.conf`. Comfortable swipe makes use of **keyboard shortcuts** to perform swipes, through `xdotool`. - Edit the configuration file by running: ``` @@ -191,19 +198,21 @@ comfortable-swipe start ## Configuration Reference -| Key | Value | Defaults | -| --------- | :--------------------------------------------------------------------: | ------------------------------------------------------------ | -| left3 | 3-finger swipe left | ctrl+alt+Right | -| left4 | 4-finger swipe left | ctrl+alt+shift+Right | -| right3 | 3-finger swipe right | ctrl+alt+Left | -| right4 | 4-finger swipe right | ctrl+alt+shift+Left | -| up3 | 3-finger swipe up | ctrl+alt+Down | -| up4 | 4-finger swipe up | ctrl+alt+shift+Down | -| down3 | 3-finger swipe down | ctrl+alt+Up | -| down4 | 4-finger swipe down | ctrl+alt+shift+Up | -| threshold | mouse movement pixels that trigger a swipe (can be as large as 1000.0) | 0.0, 240.0, 1000.0 | -| mouse3 | mouses a mouse button when 3 fingers are down | button1 (see [Mouse Gestures](#mouse-gestures-experimental)) | | -| mouse4 | mouses a mouse button when 4 fingers are down | button1 (see [Mouse Gestures](#mouse-gestures-experimental) | +| Key | Value | Defaults | +| --------- | :--------------------------------------------------------------------: | ----------------------------------------------------------------- | +| left3 | 3-finger swipe left | ctrl+alt+Right | +| left4 | 4-finger swipe left | ctrl+alt+shift+Right | +| right3 | 3-finger swipe right | ctrl+alt+Left | +| right4 | 4-finger swipe right | ctrl+alt+shift+Left | +| up3 | 3-finger swipe up | ctrl+alt+Down | +| up4 | 4-finger swipe up | ctrl+alt+shift+Down | +| down3 | 3-finger swipe down | ctrl+alt+Up | +| down4 | 4-finger swipe down | ctrl+alt+shift+Up | +| threshold | mouse movement pixels that trigger a swipe (can be as large as 1000.0) | 0.0, 240.0, 1000.0 | +| mouse3 | mouses a mouse button when 3 fingers are down | button1
(see [Mouse Gestures](#mouse-gestures-experimental)) | | +| mouse4 | mouses a mouse button when 4 fingers are down | button1
(see [Mouse Gestures](#mouse-gestures-experimental) | + +### Keystrokes Taken from `man xdotool`: @@ -221,14 +230,12 @@ Taken from `man xdotool`: Refer to https://www.linux.org/threads/xdotool-keyboard.10528/ for a complete list of keycodes you can use. -## Keyboard shortcuts +Keyboard shortcuts: - [Unity Keyboard Shortcuts](https://cheatography.com/sapemeg/cheat-sheets/ubuntu-unity-16-04/) - [GNOME Keyboard Shortcuts](https://wiki.gnome.org/Design/OS/KeyboardShortcuts) - [KDE Keyboard Shortcuts](https://community.linuxmint.com/tutorial/view/47) -> **Note**: You can check which desktop you are using with `echo $DESKTOP_SESSION`. - ## Example Configurations This section includes some example configurations which you can use for your swipe experience. @@ -381,6 +388,7 @@ Examples: ```bash mouse3 = move ``` + ```bash mouse4 = move ``` @@ -405,23 +413,147 @@ $ comfortable-swipe debug -event9 DEVICE_ADDED TouchPad seat0 default group7 cap:pg size 70x50mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on ... event9 GESTURE_SWIPE_BEGIN +2.03s 3 - event9 GESTURE_SWIPE_UPDATE +2.03s 3 -9.95/ 2.64 (-26.90/ 7.12 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.03s 3 -10.44/ 3.19 (-28.22/ 8.62 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.04s 3 -9.71/ 2.64 (-26.25/ 7.12 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.05s 3 -8.98/ 2.64 (-24.28/ 7.12 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.06s 3 -7.40/ 2.36 (-20.01/ 6.37 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.06s 3 -6.31/ 2.50 (-17.06/ 6.75 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.07s 3 -5.34/ 1.80 (-14.44/ 4.87 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.08s 3 -4.61/ 2.08 (-12.47/ 5.62 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.09s 3 -4.49/ 1.53 (-12.14/ 4.12 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.09s 3 -4.01/ 1.25 (-10.83/ 3.37 unaccelerated) - event9 GESTURE_SWIPE_UPDATE +2.10s 3 -4.13/ 0.42 (-11.15/ 1.12 unaccelerated) - event9 GESTURE_SWIPE_END +2.11s 3 - ... +event9 GESTURE_SWIPE_UPDATE +2.03s 3 -9.95/ 2.64 (-26.90/ 7.12 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.03s 3 -10.44/ 3.19 (-28.22/ 8.62 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.04s 3 -9.71/ 2.64 (-26.25/ 7.12 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.05s 3 -8.98/ 2.64 (-24.28/ 7.12 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.06s 3 -7.40/ 2.36 (-20.01/ 6.37 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.06s 3 -6.31/ 2.50 (-17.06/ 6.75 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.07s 3 -5.34/ 1.80 (-14.44/ 4.87 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.08s 3 -4.61/ 2.08 (-12.47/ 5.62 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.09s 3 -4.49/ 1.53 (-12.14/ 4.12 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.09s 3 -4.01/ 1.25 (-10.83/ 3.37 unaccelerated) +event9 GESTURE_SWIPE_UPDATE +2.10s 3 -4.13/ 0.42 (-11.15/ 1.12 unaccelerated) +event9 GESTURE_SWIPE_END +2.11s 3 +... ``` If you can see `GESTURE_SWIPE_XXX` in your output, that means your touchpad supports multi-touch swipe gestures. +## FAQ: Can I run a _shell command_ instead of a keystroke? + +**Answer 1**: _Unfortunately **NO**..._ + +For the following reasons: + +1. We want prioritize "comfort" over functionality, which we deliver through performance in our near-zero-overhead implementation (that's why C++) +2. Running a new shell command with unpredictable process time will break our unthreaded optimizations (unlike native keystrokes) +3. There are other gesture libraries that already do this properly (eg. [libinput gestures](https://github.com/bulletmark/libinput-gestures), [Fusuma](https://github.com/iberianpig/fusuma)), we don't want to be a clone of them + +That's why it's not possible... + +**Answer 2**: _... but actually **YES**!_ + +Although we don't provide this out of the box in our config, this can definitely be +done with the default bash tools. + +## Hack: Shell command on swipe + +Running shell commands our **NOT** part of the core features of comfortable-swipe, +but through the default bash tools you can _mimic_ this functionality via our program output. + +**Use Case**: _"I want to run `gnome-terminal` if I swipe up with 3 fingers."_ + +1. Attach the program to the shell: + + ```bash + comfortable-swipe start --attach + ``` + + Verify it outputs when you swipe left, left, up, right, up with 3 fingers: + + ```bash + $ comfortable-swipe start --attach + SWIPE left3 + SWIPE left3 + SWIPE up3 + SWIPE right3 + SWIPE up3 + ... + ``` + +1. Filter out the wanted gesture with `grep`. + + In our case, we want 3-finger swipe up which is "SWIPE up3": + + ```bash + $ comfortable-swipe start --attach | grep --line-buffered "SWIPE up3" + SWIPE up3 + SWIPE up3 + ... + ``` + + > **Note**: The flag `--line-buffered` ensures the output prints line-by-line. + +1. Now we can execute our shell command with `xargs`. + + So if we want "SWIPE up3" to open the terminal, + + ```bash + comfortable-swipe start --attach | grep "SWIPE up3" --line-buffered | xargs -I@ gnome-terminal + ``` + + > **Note**: The flag `-I@` in xargs substitutes the line "SWIPE xxx" to the charatcter "@", which you can use for your program. + +1. _Bonus_: Add to autostart + + Open our autostart file: + + ```bash + gedit "$(comfortable-swipe autostart path)" + ``` + + Tweak the `Exec` section: + + ```ini + [Desktop Entry] + Type=Application + Exec=comfortable-swipe start + Name=Comfortable Swipe + Comment=Comfortable 3/4-finger touchpad gestures + Hidden=false + NoDisplay=false + X-GNOME-Autostart-enabled=true + ``` + + To: + + ```ini + [Desktop Entry] + Type=Application + Exec=comfortable-swipe start --attach | grep "SWIPE up3" --line-buffered | xargs -I@ gnome-terminal + Name=Comfortable Swipe + Comment=Comfortable 3/4-finger touchpad gestures + Hidden=false + NoDisplay=false + X-GNOME-Autostart-enabled=true + ``` + +1. Log out and log back in. + You should now be able to run your custom shell commands on startup. + +1. _Bonus_: Use `--bare` instead of `--attach` to NOT run keystrokes while swiping + + ```bash + comfortable-swipe start --bare | grep "SWIPE up3" --line-buffered | xargs -I@ gnome-terminal + ``` + +1. _Bonus_: You can pipe multiple gestures with `tee`: + + ```bash + comfortable-swipe start --attach | \ + tee >(grep "SWIPE left3" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE left4" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE right3" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE right4" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE up3" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE up4" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE down3" --line-buffered | xargs -I@ ) | \ + tee >(grep "SWIPE down4" --line-buffered | xargs -I@ ) + ``` + + Substitute `` with the shell command of your choice. + ## Uninstall Run the following script: diff --git a/config/comfortable-swipe.desktop b/config/comfortable-swipe.desktop index 3b1da8f..c680906 100644 --- a/config/comfortable-swipe.desktop +++ b/config/comfortable-swipe.desktop @@ -1,8 +1,8 @@ [Desktop Entry] Type=Application +Exec=comfortable-swipe start Name=Comfortable Swipe Comment=Comfortable 3/4-finger touchpad gestures -Exec=comfortable-swipe start Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true