11 KiB
Comfortable Swipe (Ubuntu)
Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures for Ubuntu 14.04 LTS and beyond. May work for other Linux distros that support libinput.
New in Version 1.1.0: Added mouse gestures, see #mouse-gestures-experimental
New in Version 1.2.0: Autostart now switched ON by default
Installation
-
Install git and g++
sudo apt install git g++ -
Install libinput-tools and C libraries
sudo apt install libinput-tools libconfuse-dev libxdo-dev -
Clone this repository
git clone https://github.com/Hikari9/comfortable-swipe.git --depth 1 cd comfortable-swipe -
Install
bash install -
You may delete the downloaded
comfortable-swipefolder after installation.
How to Run
-
You'll need some group permissions to read touchpad input data. Run
sudo gpasswd -a "$USER" "$(ls -l /dev/input/event* | awk '{print $4}' | head --line=1)" -
Important: After inputing your
sudopassword, log out then log back in -
Run
comfortable-swipe start -
(Optional) Automatically run on startup
comfortable-swipe autostart on -
You can check general program status
$> comfortable-swipe status Autostart is ON Program is RUNNING
List of Commands
-
Program
comfortable-swipe start comfortable-swipe stop comfortable-swipe restart comfortable-swipe status -
Help / version
comfortable-swipe --help comfortable-swipe --version -
Autostart
comfortable-swipe autostart [on|off|toggle|status|path] -
Configurations
# configuration value comfortable-swipe config get <KEY> comfortable-swipe config set <KEY> [=] <VALUE> # list all configurations comfortable-swipe config list [<pattern>] # remove configuration value comfortable-swipe config delete <KEY> -
Configuration extras
# show all possible configuration keys comfortable-swipe config keys # show path to config comfortable-swipe config path # open config file with editor comfortable-swipe config edit -
(Advanced) Run program buffer
./my-custom-runner | comfortable-swipe buffer
Configuring Swipe Gestures
The default configuration file is located at ~/.config/comfortable-swipe.conf.
Comfortable swipe makes use of keyboard shortcuts to perform swipes through xdotool.
Edit configurations by running:
gedit ~/.config/comfortable-swipe.conf
After making changes, make sure to restart the program:
comfortable-swipe restart
Note
: For v1.1.0 below, the configuration file is located at
/usr/local/share/comfortable-swipe/comfortable-swipe.conf
Note
: You can locate your configuration by running
comfortable-swipe config path
Configuration Reference
| Key | Value | Example |
|---|---|---|
| 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 |
| thresmouse | 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) |
| mouse4 | mouses a mouse button when 4 fingers are down | button1 (see Mouse Gestures |
Taken from man xdotool:
Type a given keystroke. Examples being "alt+r", "Control_L+J", "ctrl+alt+n", "BackSpace".
Generally, any valid X Keysym string will work. Multiple keys are separated by '+'. Aliases exist for "alt", "ctrl", "shift", "super", and "meta" which all map to Foo_L, such as Alt_L and Control_L, etc.
In cases where your keyboard doesn't actually have the key you want to type, xdotool will automatically find an unused keycode and use that to type the key.
Refer to https://www.linux.org/threads/xdotool-keyboard.10528/ for a complete list of keycodes you can use.
Keyboard shortcuts
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.
-
Switch workspace (horizontal)
comfortable-swipe config set left3 = ctrl+alt+Right comfortable-swipe config set right3 = ctrl+alt+Left -
Switch workspace (vertical)
up3 = ctrl+alt+Down down3 = ctrl+alt+Upup3 = super+PgDown down3 = super+PgUp -
Move window to workspace (horizontal)
left4 = ctrl+alt+shift+Right right4 = ctrl+alt+shift+Left -
Move window to workspace (vertical)
up4 = ctrl+alt+shift+Down down4 = ctrl+alt+shift+Upup4 = super+shift+PgDown down4 = super+shift+PgUp -
Move window to other monitor
left4 = super+shift+Right right4 = super+shift+Left -
Toggle workspace overview
up3 = super+s -
Show desktop
down3 = super+ddown3 = ctrl+super+ddown3 = ctrl+alt+d -
Snap windows to the left/right
left3 = super+Left right3 = super+Right -
Toggle maximize
up3 = super+Up -
Toggle minimize
down3 = super+Down -
Alt+Tab switch application (experimental)
left3 = alt+Tab right3 = alt+shift+Tab
Mouse Gestures (Experimental)
You can also play around with mouse gestures during swipe. This enables certain mouse behaviour to trigger along with a 3/4-finger swipe.
Keys:
- mouse3 - for 3-finger mouse gestures
- mouse4 - for 4-finger mosue gestures
- hold3 (deprecated) - old equivalent of mouse3
- hold4 (deprecated) - old equivalent of mouse4
Possible Values:
- button1 - left click
- button2 - middle click
- button3 - right click
- button4 - wheel up (experimental)
- button5 - wheel down (experimental)
- move - just move the mouse cursor while fingers are down
- scroll - 3/4 finger natural scroll (no acceleration, very experimental)
- scroll_reverse - 3/4 finger reverse scroll (no acceleration, very experimental)
Examples:
-
3/4-finger drag
mouse3 = button1mouse4 = button1 -
3/4-finger natural scroll
mouse3 = scrollmouse4 = scroll -
3/4-finger reverse scroll
mouse3 = scroll_reversemouse4 = scroll_reverse -
Move 3/4-fingers with the cursor
mouse3 = movemouse4 = move
Note: Applying any mouse-mouse configuration may disable up/left/right/down behavior to avoid gesture conflicts. The logic of this will be improved in the future.
Debugging
You can check your touchpad driver by running
comfortable-swipe debug
This is an alias of libinput debug-events. This logs all gestures you make on your touchpad, along with other input-based events that can be captured by libinput.
A working swipe gesture will show the following:
$ 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
...
If you can see GESTURE_SWIPE_XXX in your output, that means your touchpad supports multi-touch swipe gestures.
Uninstall
Run the following script:
wget -qO - https://raw.githubusercontent.com/Hikari9/comfortable-swipe/master/uninstall | bash
Bug Reports
Search in Issues if the problem has already been solved.
Otherwise, create a new issue to report your bug.
Please include the output of the following:
lsb_release -ag++ --versionls -l /dev/input/event*xinput list | grep touchpad -ilsmod | grep hidcomfortable-swipe statuscomfortable-swipe start(if you can run it)comfortable-swipe debug(try swiping if you can seeGESTURE_SWIPE_XXX)cat $(comfortable-swipe config)