| comfortable_swipe | ||
| tests | ||
| .gitignore | ||
| CHANGELOG | ||
| command_line.cpp | ||
| cpp.compile.sh | ||
| defaults.conf | ||
| install | ||
| LICENSE | ||
| README.md | ||
| uninstall | ||
| VERSION | ||
Comfortable Swipe (Ubuntu)
New in Version 1.1.0! Added mouse gestures, see #mouse-gestures-experimental
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.
Installation
-
Install git, libinput, and g++
sudo apt-get install git libinput-tools libxdo-dev g++ -
Clone this repository
git clone https://github.com/Hikari9/comfortable-swipe.git --depth 1 cd comfortable-swipegit 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 - Check the status of your application by running
comfortable-swipe status
Swipe Configurations
Comfortable swipe makes use of keyboard shortcuts for configurations. Edit by running:
gedit $(comfortable-swipe config)
| Property | Description | Default Value | Default Behavior |
|---|---|---|---|
| left3 | 3-finger swipe left | ctrl+alt+Right | switch to right workspace |
| left4 | 4-finger swipe left | ctrl+alt+shift+Right | move window to right workspace |
| right3 | 3-finger swipe right | ctrl+alt+Left | switch to left workspace |
| right4 | 4-finger swipe right | ctrl+alt+shift+Left | move window to left workspace |
| up3 | 3-finger swipe up | ctrl+alt+Down | switch to bottom workspace |
| up4 | 4-finger swipe up | ctrl+alt+shift+Down | move window to bottom workspace |
| down3 | 3-finger swipe down | ctrl+alt+Up | switch to above workspace |
| down4 | 4-finger swipe down | ctrl+alt+shift+Up | move window to above workpace |
| threshold | mouse pixels to activate swipe | 0.0 | tweak this if you're having troubles with touchpad sensitivity (higher = less sensitive, values can be as large as 1000.0) |
| hold3 | holds a mouse button when 3 fingers are down | (none) | See Mouse Gestures (Experimental) |
| hold4 | holds a mouse button when 4 fingers are down | (none) | See Mouse Gestures (Experimental) |
After making changes, make sure to restart the program:
comfortable-swipe restart
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:
- GNOME: https://wiki.gnome.org/Design/OS/KeyboardShortcuts
- Linux Mint: https://community.linuxmint.com/tutorial/view/47
Swipe Gesture Templates
-
Switching workspaces
# Unity, KDE left3 = ctrl+alt+Right right3 = ctrl+alt+Left up3 = ctrl+alt+Down down3 = ctrl+alt+Up# GNOME up3 = super+PgDown down3 = super+PgUp -
Move window to workspace
# Unity, KDE left4 = ctrl+alt+shift+Right right4 = ctrl+alt+shift+Left up4 = ctrl+alt+shift+Down down4 = ctrl+alt+shift+Up# GNOME up4 = super+shift+PgDown down4 = super+shift+PgUp -
Move window to other monitor
# GNOME left4 = super+shift+Right right4 = super+shift+Left -
Toggle workspace overview
up3 = super+s -
Show desktop (setup)
# Ubuntu, KDE, Gnome down3 = super+d# Linux Mint down3 = 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)
We have included simple mouse gestures on swipe by setting hold3 and hold4.
Possible Values:
move- just move the mouse cursor (no mousedown)button1- hold left click on finger swipebutton2- hold middle click on finger swipebutton3- hold right click on finger swipebutton4- wheel up on finger swipe (experimental)button5- wheel down on finger swipe (experimental)scroll- naive 3/4 finger natural scroll (no acceleration, very experimental)scroll_reverse- naive 3/4 finger reverse scroll (no acceleration, very experimental)
Any value not mentioned above disables the mouse-hold.
Examples:
-
3-finger drag
hold3 = button1 -
4-finger drag (with middle click)
hold4 = button2 -
3-finger natural scroll
hold3 = scroll -
4-finger reverse scroll
hold4 = scroll_reverse -
Just move the cursor
hold3 = move hold4 = move -
Any other command will disable the mouse hold
hold3 = disabled hold4 = nothing
Note: Applying any mouse-hold configuration will 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
Download the uninstall script then run bash uninstall
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)