Browse by type
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
bash
sudo apt install git g++
bash
sudo apt install libinput-tools libinih-dev libxdo-dev
bash
git clone https://github.com/Hikari9/comfortable-swipe.git --depth 1
cd comfortable-swipe
bash
bash install
comfortable-swipe folder after installation.bash
sudo gpasswd -a "$USER" "$(ls -l /dev/input/event* | awk '{print $4}' | head --line=1)"
Important: After inputing your sudo password, log out then log back in
Start the Program
comfortable-swipe start
You will see this output:
$ comfortable-swipe start
Comfortable swipe is RUNNING in the background
comfortable-swipe stop
bash
comfortable-swipe autostart
bash
comfortable-swipe status
Example:
``` $ comfortable-swipe status
Autostart is ON Program is RUNNING
Configuration: /home/user/.config/comfortable-swipe.conf left3 is VALID (ctrl+super+Right) left4 is VALID (ctrl+super+shift+Right) right3 is VALID (ctrl+super+Left) right4 is VALID (ctrl+super+shift+Left) up3 is VALID (ctrl+F12) up4 is VALID (super+d) down3 is VALID (ctrl+F12) down4 is VALID (super+d) threshold is VALID (1.0) mouse3 is NOTSET mouse4 is NOTSET ```
comfortable-swipe <PROPERTY>
bash
comfortable-swipe left3
comfortable-swipe left4
comfortable-swipe right3
comfortable-swipe right4
comfortable-swipe up3
comfortable-swipe up4
comfortable-swipe down3
comfortable-swipe down4
comfortable-swipe threshold
comfortable-swipe mouse3
comfortable-swipe mouse4
bash
comfortable-swipe <PROPERTY> [=] <VALUES>
bash
comfortable-swipe left3 = super+Right
comfortable-swipe right3 = super+Left
comfortable-swipe right4 = ctrl+alt+Left
comfortable-swipe down4 = super+d
comfortable-swipe up3 = ctrl+shift+Up
Other Commands
bash
comfortable-swipe config list
comfortable-swipe config get <PROPERTY>
comfortable-swipe config set <PROPERTY> [=] <VALUE>
comfortable-swipe config path
comfortable-swipe config keys
bash
comfortable-swipe --version
comfortable-swipe --help
bash
comfortable-swipe autostart on
comfortable-swipe autostart off
comfortable-swipe autostart toggle
comfortable-swipe autostart status
comfortable-swipe autostart path
--attachExample 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
...
--bare to attach without actually swipingbash
$ comfortable-swipe start --bare
SWIPE left3
SWIPE left4
SWIPE right3
SWIPE up3
...
bash
$ 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
...
The default configuration file is located at ~/.config/comfortable-swipe.conf.
Comfortable swipe makes use of keyboard shortcuts to perform swipes, through xdotool.
Set a property directly with:
comfortable-swipe <PROPERTY> [=] <VALUE>
Or edit the configuration file manually:
gedit ~/.config/comfortable-swipe.conf
After editing, make sure to restart with comfortable-swipe start.
Warning: For v1.1.0 below, the configuration file is located at
/usr/local/share/comfortable-swipe/comfortable-swipe.confNote: You can locate the absolute path to your configuration by running:
comfortable-swipe config path
| Property | Value | Examples |
|---|---|---|
| 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 / move / scroll |
(see Mouse Gestures) | | | mouse4 | mouses a mouse button when 4 fingers are down | button1 / move / scroll
(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.
This section includes some example configurations which you can use for your swipe experience.
bash
# Ubuntu flavors + GNOME
comfortable-swipe left3 = ctrl+alt+Right
comfortable-swipe right3 = ctrl+alt+Left
bash
# Ubuntu flavors + GNOME
comfortable-swipe up3 = ctrl+alt+Down
comfortable-swipe down3 = ctrl+alt+Up
bash
# GNOME alt.
comfortable-swipe up3 = super+PgDown
comfortable-swipe down3 = super+PgUp
bash
# Pop OS
comfortable-swipe up3 = ctrl+super+Down
comfortable-swipe down3 = ctrl+super+Up
bash
# Ubuntu flavors + GNOME + Kali
comfortable-swipe left4 = ctrl+alt+shift+Right
comfortable-swipe right4 = ctrl+alt+shift+Left
bash
# Elementary OS
comfortable-swipe left4 = super+alt+Right
comfortable-swipe right4 = super+alt+Left
bash
# Ubuntu flavors + GNOME + Kali
comfortable-swipe up4 = ctrl+alt+shift+Down
comfortable-swipe down4 = ctrl+alt+shift+Up
bash
# GNOME alt.
comfortable-swipe up4 = super+shift+PgDown
comfortable-swipe down4 = super+shift+PgUp
bash
# Ubuntu flavors + GNOME
comfortable-swipe left4 = super+shift+Right
comfortable-swipe right4 = super+shift+Left
bash
# Ubuntu flavors + Elementary OS
comfortable-swipe up3 = super+s
bash
# Elementary OS (all workspaces)
comfortable-swipe up4 = super+a
bash
# Ubuntu flavors
comfortable-swipe down3 = ctrl+super+d
bash
# Linux Mint
comfortable-swipe down3 = super+d
bash
# Kali
comfortable-swipe down3 = ctrl+alt+d
bash
# KDE
comfortable-swipe down3 = ctrl+F12
bash
comfortable-swipe left3 = super+Left
comfortable-swipe right3 = super+Right
bash
comfortable-swipe up3 = super+Up
bash
comfortable-swipe down3 = super+Down
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:
Possible Values:
Tip: You can clear mouse gestures by setting them blank
comfortable-swipe mouse3 = comfortable-swipe mouse4 =
Examples:
✔️ swipes OK ⭕ swipes DISABLED
bash
comfortable-swipe mouse3 = button1
comfortable-swipe mouse4 = button1
You can also use button2 for middle click and button3 for right click.
bash
comfortable-swipe mouse3 = scroll
comfortable-swipe mouse4 = scroll
bash
comfortable-swipe mouse3 = scroll_reverse
comfortable-swipe mouse4 = scroll_reverse
bash
comfortable-swipe mouse3 = move
comfortable-swipe mouse4 = move
Warning: Some mouse configuration will disable up/left/right/down behavior to avoid gesture conflicts. The logic of this will be improved in the future.
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:
```bash $ 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
$ claude mcp add comfortable-swipe \
-- python -m otcore.mcp_server <graph>