Go to file
Rico Tiongson 19734c8a2e
Use Travis CI (#59)
* Package comfortable-swipe with Python (#58)

* Add initial python setup script

* Add working initial python porting definition for comfortable-swipe

* Add python extensions to cpp libraries

* Remove boost and prefer vanilla Python.h implementation

* Add main driver function for comfortable_swipe

* Fix compilation for Python 3

* Remove depcreacted cpp scripts in root

* Move script to entrypoint

* Increment version to beta

* Update variable formatting

* Remove deprecated install script

* Move install to post-install command

* Create install script hooks

* Fix bdist_wheel class errors

* Use absolute path for c++ sources

* Unignore index files

* Move autostart to python

* Allow comfortable swipe autostart for possible virtualenv

* Completely port autostart to python

* Move status to python

* Optimize swipe function

* Remove iostream optimization from buffer

* Register pre-install and post-install in a stack

* Remove underscores from value-defined macros

* Compress default config

* Change cpp to __init__.py

* Error message

* Bugfix for python2

* Use a requirements.txt

* Add initial travis configuration

* Attempt fix travis configuration

* Attempt fix g++ error

* Bugfix missing path dir on autostart

* Add classifiers

* Attempt install build-essential instead of g++

* Add missing psutil from requirements

* Modify README

* Attempt fix build errors in travis

* Update README

* Add simple build badges
2019-03-08 19:53:27 +08:00
comfortable_swipe Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
cpp Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
tests Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
.gitignore Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
.travis.yml Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
LICENSE Initial commit 2017-09-25 22:37:54 +08:00
MANIFEST.in Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
README.md Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
requirements.txt Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
setup.cfg Use Travis CI (#59) 2019-03-08 19:53:27 +08:00
setup.py Use Travis CI (#59) 2019-03-08 19:53:27 +08:00

Comfortable Swipe (Debian/Ubuntu)

comfortable-swipe: version build: master build: develop License: GPL v3

Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures. Tested in Ubuntu 14.04 LTS and beyond, for Unity, GNOME, and KDE desktop environments.

Note

: May work for other Linux distros that support libinput and libxdo (untested).

Installation

  1. Update and install essential tools and libraries

    sudo apt update && sudo apt install git g++-7 python3-pip libinput-tools libxdo-dev
    
  2. Install comfortable-swipe for your user

    pip3 install --user git+https://github.com/Hikari9/comfortable-swipe
    
  3. You can check status with comfortable-swipe status

    $> comfortable-swipe status
    usr/local/share/comfortable-swipe/comfortable-swipe.conf
        threshold = 0.0
            left3 = ctrl+alt+Right
            left4 = ctrl+alt+shift+Right
           right3 = ctrl+alt+Left
           right4 = ctrl+alt+shift+Left
              up3 = ctrl+alt+Down
              up4 = ctrl+alt+shift+Down
            down3 = ctrl+alt+Up
            down4 = ctrl+alt+shift+Up
    autostart is ON
    comfortable-swipe program is STOPPED
    
  4. You can list down all commands with comfortable-swipe or comfortable-swipe help

    $> comfortable-swipe
    comfortable-swipe [start|stop|restart|autostart|buffer|help|config|debug|status]
    
    start      - starts 3/4-finger gesture service
    stop       - stops 3/4-finger gesture service
    restart    - stops then starts 3/4-finger gesture service
    autostart  - automatically run on startup (toggleable)
    buffer     - parses output of libinput debug-events
    help       - shows the help dialog
    config     - locates the config file
    debug      - logs raw output from input events taken from libinput
    status     - checks status of program and autostart
    

How to Run

  1. 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)
    
  2. Important: After inputing your sudo password, log out then log back in

  3. By default, comfortable-swipe should be running. Otherwise, run:

    comfortable-swipe start
    

    You can see if gestures work correctly if you see SWIPE xxx in the output:

    $> comfortable-swipe start
    SWIPE left3
    SWIPE right3
    ...
    

How to Upgrade

pip3 install -U --user git+https://github.com/Hikari9/comfortable-swipe

Uninstall

# Uncomment below to COMPLETELY remove configurations (not recommended)
# rm $(comfortable-swipe config)

pip3 uninstall comfortable-swipe

Other Commands

  1. comfortable-swipe config - outputs location of configuration file

    $> comfortable-swipe config
    /usr/local/share/comfortable-swipe/comfortable-swipe.conf
    
  2. comfortable-swipe autostart - Toggles autostart

    $> comfortable-swipe autostart
    Autostart switched off
    
  3. comfortable-swipe debug - Debugs input (this is an unbuffered alias of libinput debug-events)

    $> 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.

Configurations

Comfortable swipe makes use of keyboard shortcuts for configurations. Edit by running

gedit $(comfortable-swipe config)

Make sure to restart after making changes:

comfortable-swipe restart
Property Description Default Value Default Behavior
threshold mouse pixels to activate swipe; higher = less sensitive; floating-point (Note: Sky is the limit! Can be as large as 1000.0) 0.0
left3 3-finger swipe left ctrl+shift+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+shift+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+shift+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+shift+Down switch to above workspace
down4 4-finger swipe down ctrl+alt+shift+Up move window to above workpace

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.

Bug Reports

Create an issue here to report a bug.