comfortable-swipe/README.md
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

180 lines
6.9 KiB
Markdown

# Comfortable Swipe (Debian/Ubuntu)
[![comfortable-swipe: version](https://img.shields.io/github/tag-date/Hikari9/comfortable-swipe.svg?color=informational&label=comfortable-swipe)](https://github.com/Hikari9/comfortable-swipe/releases)
[![build: master](https://img.shields.io/travis/Hikari9/comfortable-swipe/master.svg?label=master)](https://github.com/Hikari9/comfortable-swipe/commits/master)
[![build: develop](https://img.shields.io/travis/Hikari9/comfortable-swipe/develop.svg?label=develop)](https://github.com/Hikari9/comfortable-swipe/commits/develop)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-orange.svg)](https://www.gnu.org/licenses/gpl-3.0)
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
```bash
sudo apt update && sudo apt install git g++-7 python3-pip libinput-tools libxdo-dev
```
2. Install `comfortable-swipe` for your user
```bash
pip3 install --user git+https://github.com/Hikari9/comfortable-swipe
```
3. You can check status with `comfortable-swipe status`
```bash
$> 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
```
3. You can list down all commands with `comfortable-swipe` or `comfortable-swipe help`
```bash
$> 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
```bash
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:
```bash
comfortable-swipe start
```
You can see if gestures work correctly if you see `SWIPE xxx` in the output:
```bash
$> comfortable-swipe start
SWIPE left3
SWIPE right3
...
```
## How to Upgrade
```bash
pip3 install -U --user git+https://github.com/Hikari9/comfortable-swipe
```
## Uninstall
```bash
# 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
```bash
$> comfortable-swipe config
/usr/local/share/comfortable-swipe/comfortable-swipe.conf
```
2. `comfortable-swipe autostart` - Toggles autostart
```bash
$> comfortable-swipe autostart
Autostart switched off
```
3. `comfortable-swipe debug` - Debugs input (this is an unbuffered alias of `libinput debug-events`)
```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
...
```
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
```bash
gedit $(comfortable-swipe config)
```
Make sure to restart after making changes:
```bash
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](https://github.com/Hikari9/comfortable-swipe-ubuntu/issues/new) to report a bug.