fusuma 1.9.0 → 2.0.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/pull_request_template.md +9 -0
- data/.rubocop.yml +24 -0
- data/CHANGELOG.md +65 -2
- data/CONTRIBUTING.md +72 -0
- data/Gemfile +12 -0
- data/README.md +140 -70
- data/bin/console +15 -0
- data/fusuma.gemspec +1 -11
- data/lib/fusuma.rb +15 -7
- data/lib/fusuma/config.rb +40 -34
- data/lib/fusuma/config/index.rb +9 -2
- data/lib/fusuma/config/searcher.rb +90 -0
- data/lib/fusuma/config/yaml_duplication_checker.rb +42 -0
- data/lib/fusuma/device.rb +3 -1
- data/lib/fusuma/environment.rb +2 -1
- data/lib/fusuma/libinput_command.rb +37 -17
- data/lib/fusuma/plugin/buffers/timer_buffer.rb +46 -0
- data/lib/fusuma/plugin/events/records/gesture_record.rb +4 -1
- data/lib/fusuma/plugin/executors/command_executor.rb +2 -4
- data/lib/fusuma/plugin/filters/libinput_timeout_filter.rb +21 -0
- data/lib/fusuma/plugin/inputs/input.rb +46 -3
- data/lib/fusuma/plugin/inputs/libinput_command_input.rb +27 -5
- data/lib/fusuma/plugin/inputs/timer_input.rb +63 -0
- data/lib/fusuma/version.rb +1 -1
- metadata +17 -150
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd6d9f73a5476aed954644b4d5f7caa9627779139bc84e301fa2ae67fbb1d71f
|
4
|
+
data.tar.gz: e893683da4aa5f235481ec32bf45a6a2386bc6b64989f36617b6806c538602b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55b7d3393e283bc459b865d293839d6aa2286db4ece74b14d9b50c05726f4d5bfb32609b79541ad816b0ebdebb687b948f03f53fdd1e4d070bf470af56360c84
|
7
|
+
data.tar.gz: f9d5b36287ccd132687497f8f527fc1ef90b0dc818feccf2f9cc6db0b76371a30832467df2d8aa0fca8ee3c5804551da8470b34784c185da73dc08ae507034de
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
|
2
|
+
|
3
|
+
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/iberianpig/fusuma/issues) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea.
|
4
|
+
|
5
|
+
- [ ] Follow the instructions in [CONTRIBUTING](https://github.com/iberianpig/fusuma/blob/master/CONTRIBUTING.md). Most importantly, ensure the tests and linter pass by running `bundle exec rspec` and `bundle exec rubocop`.
|
6
|
+
|
7
|
+
- [ ] Update code documentation if necessary.
|
8
|
+
|
9
|
+
closes: #<issue_number_goes_here>
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
|
+
AllCops:
|
4
|
+
TargetRubyVersion: '2.3'
|
5
|
+
|
3
6
|
Metrics/ModuleLength:
|
4
7
|
Exclude:
|
5
8
|
- "**/*_spec.rb"
|
@@ -14,3 +17,24 @@ Layout/LineLength:
|
|
14
17
|
Exclude:
|
15
18
|
- "fusuma.gemspec"
|
16
19
|
- "**/*_spec.rb"
|
20
|
+
|
21
|
+
# For rubocop < 1.0.0
|
22
|
+
Style/HashEachMethods:
|
23
|
+
Enabled: true
|
24
|
+
|
25
|
+
# For rubocop < 1.0.0
|
26
|
+
Style/HashTransformKeys:
|
27
|
+
Enabled: true
|
28
|
+
|
29
|
+
# For rubocop < 1.0.0
|
30
|
+
Style/HashTransformValues:
|
31
|
+
Enabled: true
|
32
|
+
|
33
|
+
# For compatible ruby 2.3
|
34
|
+
Style/RedundantBegin:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
Lint/RaiseException:
|
38
|
+
Enabled: true
|
39
|
+
Lint/StructNewOverride:
|
40
|
+
Enabled: true
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,65 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v1.11.0](https://github.com/iberianpig/fusuma/tree/v1.11.0) (2020-07-25)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.10.2...v1.11.0)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Feature/yaml check [\#193](https://github.com/iberianpig/fusuma/pull/193) ([iberianpig](https://github.com/iberianpig))
|
10
|
+
|
11
|
+
## [v1.10.2](https://github.com/iberianpig/fusuma/tree/v1.10.2) (2020-07-23)
|
12
|
+
|
13
|
+
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.10.1...v1.10.2)
|
14
|
+
|
15
|
+
**Closed issues:**
|
16
|
+
|
17
|
+
- Gestures from libinput are not recognised [\#192](https://github.com/iberianpig/fusuma/issues/192)
|
18
|
+
- Vertical 4 finger swipe and rotation not recognised [\#189](https://github.com/iberianpig/fusuma/issues/189)
|
19
|
+
- Pinch in gesture not recognized in Popos 20.04 \(Ubuntu 20.04\) [\#184](https://github.com/iberianpig/fusuma/issues/184)
|
20
|
+
- Fusuma crashes while switching between workspaces on KDE Plasma [\#181](https://github.com/iberianpig/fusuma/issues/181)
|
21
|
+
- Window Prev/Next moves desktop environment when no active window [\#178](https://github.com/iberianpig/fusuma/issues/178)
|
22
|
+
- Add ydotool to docs. [\#177](https://github.com/iberianpig/fusuma/issues/177)
|
23
|
+
- Can't use alternative .config.yml [\#176](https://github.com/iberianpig/fusuma/issues/176)
|
24
|
+
- Fusuma stops working sometimes [\#175](https://github.com/iberianpig/fusuma/issues/175)
|
25
|
+
- Pinch \(2, in\) does not work. [\#174](https://github.com/iberianpig/fusuma/issues/174)
|
26
|
+
|
27
|
+
**Merged pull requests:**
|
28
|
+
|
29
|
+
- 177. Add ydootool to docs. [\#179](https://github.com/iberianpig/fusuma/pull/179) ([mattdemarillac](https://github.com/mattdemarillac))
|
30
|
+
|
31
|
+
## [v1.10.1](https://github.com/iberianpig/fusuma/tree/v1.10.1) (2020-05-15)
|
32
|
+
|
33
|
+
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.10.0...v1.10.1)
|
34
|
+
|
35
|
+
**Closed issues:**
|
36
|
+
|
37
|
+
- Some gestures are not always recognized [\#172](https://github.com/iberianpig/fusuma/issues/172)
|
38
|
+
- Unable to reprogram Pinch [\#171](https://github.com/iberianpig/fusuma/issues/171)
|
39
|
+
|
40
|
+
## [v1.10.0](https://github.com/iberianpig/fusuma/tree/v1.10.0) (2020-05-04)
|
41
|
+
|
42
|
+
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.9.0...v1.10.0)
|
43
|
+
|
44
|
+
**Closed issues:**
|
45
|
+
|
46
|
+
- Each action took about 2 secs to react [\#167](https://github.com/iberianpig/fusuma/issues/167)
|
47
|
+
- ruby2.7 [\#164](https://github.com/iberianpig/fusuma/issues/164)
|
48
|
+
- Zoom-in not really usable on Vivaldi [\#159](https://github.com/iberianpig/fusuma/issues/159)
|
49
|
+
- Reversed directions with no alternatives [\#133](https://github.com/iberianpig/fusuma/issues/133)
|
50
|
+
|
51
|
+
**Merged pull requests:**
|
52
|
+
|
53
|
+
- Implement timeout event [\#169](https://github.com/iberianpig/fusuma/pull/169) ([iberianpig](https://github.com/iberianpig))
|
54
|
+
|
55
|
+
## [v1.9.0](https://github.com/iberianpig/fusuma/tree/v1.9.0) (2020-03-30)
|
56
|
+
|
57
|
+
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.8.0...v1.9.0)
|
58
|
+
|
59
|
+
**Closed issues:**
|
60
|
+
|
61
|
+
- Touchpad is filtered in listed devices [\#156](https://github.com/iberianpig/fusuma/issues/156)
|
62
|
+
|
3
63
|
## [v1.8.0](https://github.com/iberianpig/fusuma/tree/v1.8.0) (2020-03-28)
|
4
64
|
|
5
65
|
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v1.7.0...v1.8.0)
|
@@ -152,7 +212,6 @@
|
|
152
212
|
|
153
213
|
- Interval and threshold specific for a trigger [\#92](https://github.com/iberianpig/fusuma/pull/92) ([irq](https://github.com/irq))
|
154
214
|
- Fix spelling: Elementary to elementary [\#90](https://github.com/iberianpig/fusuma/pull/90) ([ryonakano](https://github.com/ryonakano))
|
155
|
-
- Assigning commands [\#73](https://github.com/iberianpig/fusuma/pull/73) ([iberianpig](https://github.com/iberianpig))
|
156
215
|
|
157
216
|
## [v0.9.2](https://github.com/iberianpig/fusuma/tree/v0.9.2) (2018-07-19)
|
158
217
|
|
@@ -241,6 +300,7 @@
|
|
241
300
|
|
242
301
|
**Merged pull requests:**
|
243
302
|
|
303
|
+
- Assigning commands [\#73](https://github.com/iberianpig/fusuma/pull/73) ([iberianpig](https://github.com/iberianpig))
|
244
304
|
- Update rake requirement to ~\> 12.3 [\#72](https://github.com/iberianpig/fusuma/pull/72) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview))
|
245
305
|
|
246
306
|
## [v0.3.5](https://github.com/iberianpig/fusuma/tree/v0.3.5) (2018-01-01)
|
@@ -284,6 +344,10 @@
|
|
284
344
|
- parse\_finger\_directions: undefined method `tr' for nil:NilClass \(NoMethodError\) [\#29](https://github.com/iberianpig/fusuma/issues/29)
|
285
345
|
- Error after upgrading to libinput 1.6.0 [\#26](https://github.com/iberianpig/fusuma/issues/26)
|
286
346
|
|
347
|
+
**Merged pull requests:**
|
348
|
+
|
349
|
+
- Added interval options to config. [\#36](https://github.com/iberianpig/fusuma/pull/36) ([joshuatshaffer](https://github.com/joshuatshaffer))
|
350
|
+
|
287
351
|
## [v0.2.7](https://github.com/iberianpig/fusuma/tree/v0.2.7) (2017-02-04)
|
288
352
|
|
289
353
|
[Full Changelog](https://github.com/iberianpig/fusuma/compare/v0.2.6...v0.2.7)
|
@@ -294,7 +358,6 @@
|
|
294
358
|
|
295
359
|
**Merged pull requests:**
|
296
360
|
|
297
|
-
- Added interval options to config. [\#36](https://github.com/iberianpig/fusuma/pull/36) ([joshuatshaffer](https://github.com/joshuatshaffer))
|
298
361
|
- update parser [\#30](https://github.com/iberianpig/fusuma/pull/30) ([iberianpig](https://github.com/iberianpig))
|
299
362
|
|
300
363
|
## [v0.2.6](https://github.com/iberianpig/fusuma/tree/v0.2.6) (2017-01-22)
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Contributing to Fusuma
|
2
|
+
|
3
|
+
1. Fork the repo, develop and test your code changes.
|
4
|
+
2. Send a pull request.
|
5
|
+
|
6
|
+
## Setup
|
7
|
+
|
8
|
+
In order to use the Fusuma console and run the project's tests,
|
9
|
+
there is a small amount of setup:
|
10
|
+
|
11
|
+
1. Install Ruby. Fusuma requires Ruby 2.3+. You may choose to
|
12
|
+
manage your Ruby and gem installations with [RVM](https://rvm.io/),
|
13
|
+
[rbenv](https://github.com/rbenv/rbenv), or
|
14
|
+
[chruby](https://github.com/postmodern/chruby).
|
15
|
+
|
16
|
+
2. Install [Bundler](http://bundler.io/).
|
17
|
+
|
18
|
+
```sh
|
19
|
+
$ gem install bundler
|
20
|
+
```
|
21
|
+
|
22
|
+
3. Install the top-level project dependencies.
|
23
|
+
|
24
|
+
```sh
|
25
|
+
$ bundle install
|
26
|
+
```
|
27
|
+
|
28
|
+
## Fusuma Tests
|
29
|
+
|
30
|
+
Tests are very important part of Fusuma. All contributions
|
31
|
+
should include tests that ensure the contributed code behaves as expected.
|
32
|
+
|
33
|
+
To run tests:
|
34
|
+
|
35
|
+
``` sh
|
36
|
+
$ bundle exec rspec
|
37
|
+
```
|
38
|
+
|
39
|
+
### Fusuma Document
|
40
|
+
|
41
|
+
The project uses [YARD](https://github.com/lsegal/yard) for generating documentation.
|
42
|
+
|
43
|
+
If you're not sure about YARD, please refer to [YARD cheatsheet](https://gist.github.com/phansch/db18a595d2f5f1ef16646af72fe1fb0e).
|
44
|
+
|
45
|
+
To run the Fusuma documentation tests:
|
46
|
+
|
47
|
+
``` sh
|
48
|
+
$ bundle exec yard --fail-on-warning
|
49
|
+
```
|
50
|
+
|
51
|
+
To check Fusuma documents with running local server:
|
52
|
+
|
53
|
+
```
|
54
|
+
$ bundle exec yard server
|
55
|
+
```
|
56
|
+
Then open (http://localhost:8808/)
|
57
|
+
|
58
|
+
## Coding Style
|
59
|
+
|
60
|
+
Please follow the established coding style in the library.
|
61
|
+
The style is is largely based on [The Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide).
|
62
|
+
|
63
|
+
You can check your code against these rules by running Rubocop like so:
|
64
|
+
|
65
|
+
```sh
|
66
|
+
$ bundle exec rubocop
|
67
|
+
```
|
68
|
+
|
69
|
+
## Code of Conduct
|
70
|
+
|
71
|
+
Please note that this project is released with a Contributor Code of Conduct. By
|
72
|
+
participating in this project you agree to abide by its terms.
|
data/Gemfile
CHANGED
@@ -4,3 +4,15 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in fusuma.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
gem 'bundler'
|
9
|
+
gem 'coveralls'
|
10
|
+
gem 'github_changelog_generator', '~> 1.14'
|
11
|
+
gem 'pry-byebug', '~> 3.4'
|
12
|
+
gem 'pry-doc'
|
13
|
+
gem 'pry-inline'
|
14
|
+
gem 'rake', '~> 13.0'
|
15
|
+
gem 'reek'
|
16
|
+
gem 'rspec', '~> 3.0'
|
17
|
+
gem 'rubocop', '0.81'
|
18
|
+
gem 'yard'
|
data/README.md
CHANGED
@@ -7,18 +7,32 @@ This gem makes your linux able to recognize swipes or pinchs and assign commands
|
|
7
7
|
|
8
8
|
襖(Fusuma) means sliding door used to partition off rooms in a Japanese house.
|
9
9
|
|
10
|
+
## Features
|
11
|
+
|
12
|
+
- Easy installation with RubyGems
|
13
|
+
- Defining Gestures and Actions in YAML
|
14
|
+
- Sensitivity setting (threshold, interval) for gesture recognition
|
15
|
+
- Automatic device addition for reconnecting external touchpads
|
16
|
+
- Extension of gesture recognition by [plugin system](https://github.com/iberianpig/fusuma/#fusuma-plugins)
|
17
|
+
|
10
18
|
## Installation
|
11
19
|
|
12
20
|
### 1. Grant permission to read the touchpad device
|
21
|
+
|
13
22
|
**IMPORTANT**: You **MUST** be a member of the **INPUT** group to read touchpad by Fusuma.
|
14
23
|
|
15
24
|
```bash
|
16
25
|
$ sudo gpasswd -a $USER input
|
17
26
|
```
|
18
27
|
|
19
|
-
Then, You
|
28
|
+
Then, You apply the change with no logout or reboot.
|
29
|
+
|
30
|
+
```bash
|
31
|
+
$ newgrp input
|
32
|
+
```
|
20
33
|
|
21
34
|
### 2. Install libinput-tools
|
35
|
+
|
22
36
|
You need `libinput` release 1.0 or later.
|
23
37
|
|
24
38
|
```bash
|
@@ -26,6 +40,7 @@ $ sudo apt-get install libinput-tools
|
|
26
40
|
```
|
27
41
|
|
28
42
|
### 3. Install Ruby
|
43
|
+
|
29
44
|
Fusuma runs in Ruby, so you must install it first.
|
30
45
|
|
31
46
|
```bash
|
@@ -41,6 +56,7 @@ $ sudo gem install fusuma
|
|
41
56
|
### 5. Install xdotool (optional)
|
42
57
|
|
43
58
|
For sending shortcuts:
|
59
|
+
|
44
60
|
```bash
|
45
61
|
$ sudo apt-get install xdotool
|
46
62
|
```
|
@@ -49,7 +65,6 @@ $ sudo apt-get install xdotool
|
|
49
65
|
|
50
66
|
Ensure the touchpad events are being sent to the GNOME desktop by running the following command:
|
51
67
|
|
52
|
-
|
53
68
|
```bash
|
54
69
|
$ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled
|
55
70
|
```
|
@@ -76,12 +91,25 @@ $ mkdir -p ~/.config/fusuma # create config directory
|
|
76
91
|
$ nano ~/.config/fusuma/config.yml # edit config file.
|
77
92
|
```
|
78
93
|
|
94
|
+
|
95
|
+
### Available gestures
|
96
|
+
|
97
|
+
* `swipe:`
|
98
|
+
* support `3:`, `4:` fingers
|
99
|
+
* support `left:`, `right:`, `up:`, `down:` directions
|
100
|
+
* `pinch:`
|
101
|
+
* support `2:`, `3:`, `4:` fingers
|
102
|
+
* support `in:`, `out:` directions
|
103
|
+
* `rotate:`
|
104
|
+
* support `2:`, `3:`, `4:` fingers
|
105
|
+
* support `clockwise:`,`counterclockwise:` directions
|
106
|
+
|
79
107
|
### About YAML Basic Syntax
|
80
|
-
* Comments in YAML begins with the (#) character.
|
81
|
-
* Comments must be separated from other tokens by whitespaces.
|
82
|
-
* Indentation of whitespace is used to denote structure.
|
83
|
-
* Tabs are not included as indentation for YAML files.
|
84
108
|
|
109
|
+
- Comments in YAML begins with the `#` character.
|
110
|
+
- Comments must be separated from other tokens by whitespaces.
|
111
|
+
- Indentation of whitespace is used to denote structure.
|
112
|
+
- Tabs are not included as indentation for YAML files.
|
85
113
|
|
86
114
|
### Example: Gesture Mapping for Ubuntu
|
87
115
|
|
@@ -89,46 +117,48 @@ https://github.com/iberianpig/fusuma/wiki/Ubuntu
|
|
89
117
|
|
90
118
|
```yaml
|
91
119
|
swipe:
|
92
|
-
3:
|
93
|
-
left:
|
94
|
-
command:
|
95
|
-
right:
|
96
|
-
command:
|
97
|
-
up:
|
98
|
-
command:
|
99
|
-
down:
|
100
|
-
command:
|
120
|
+
3:
|
121
|
+
left:
|
122
|
+
command: "xdotool key alt+Right" # History forward
|
123
|
+
right:
|
124
|
+
command: "xdotool key alt+Left" # History back
|
125
|
+
up:
|
126
|
+
command: "xdotool key super" # Activity
|
127
|
+
down:
|
128
|
+
command: "xdotool key super" # Activity
|
101
129
|
4:
|
102
|
-
left:
|
103
|
-
command:
|
104
|
-
right:
|
105
|
-
command:
|
106
|
-
up:
|
107
|
-
command:
|
108
|
-
down:
|
109
|
-
command:
|
130
|
+
left:
|
131
|
+
command: "xdotool key ctrl+alt+Down" # Switch to next workspace
|
132
|
+
right:
|
133
|
+
command: "xdotool key ctrl+alt+Up" # Switch to previous workspace
|
134
|
+
up:
|
135
|
+
command: "xdotool key ctrl+alt+Down" # Switch to next workspace
|
136
|
+
down:
|
137
|
+
command: "xdotool key ctrl+alt+Up" # Switch to previous workspace
|
110
138
|
pinch:
|
111
139
|
in:
|
112
|
-
command:
|
140
|
+
command: "xdotool keydown ctrl click 4 keyup ctrl" # Zoom in
|
113
141
|
out:
|
114
|
-
command:
|
142
|
+
command: "xdotool keydown ctrl click 5 keyup ctrl" # Zoom out
|
115
143
|
```
|
116
144
|
|
117
145
|
### More Example of config.yml
|
118
|
-
The following wiki pages can be edited by everyone.
|
119
146
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
147
|
+
The following wiki pages can be edited by everyone.
|
148
|
+
|
149
|
+
- [Ubuntu](https://github.com/iberianpig/fusuma/wiki/Ubuntu)
|
150
|
+
- [elementary OS](https://github.com/iberianpig/fusuma/wiki/elementary-OS)
|
151
|
+
- [i3](https://github.com/iberianpig/fusuma/wiki/i3)
|
152
|
+
- [KDE to mimic MacOS](https://github.com/iberianpig/fusuma/wiki/KDE-to-mimic-MacOS)
|
153
|
+
- [POP OS with Cinnamon](https://github.com/iberianpig/fusuma/wiki/POP-OS-with-Cinnamon)
|
154
|
+
- [PopOS Default Gnome](https://github.com/iberianpig/fusuma/wiki/PopOS-Default-Gnome)
|
155
|
+
- [Ubuntu OS to mimic Mac a little](https://github.com/iberianpig/fusuma/wiki/Ubuntu-OS-to-mimic-Mac-a-little)
|
127
156
|
|
128
157
|
If you have a nice configuration, please share `~/.config/fusuma/config.yml` with everyone.
|
129
158
|
|
130
159
|
### Threshold and Interval
|
131
|
-
|
160
|
+
|
161
|
+
if `command:` properties are blank, the swipe/pinch doesn't execute command.
|
132
162
|
|
133
163
|
`threshold:` is sensitivity to swipe/pinch. Default value is 1.
|
134
164
|
If the swipe's threshold is `0.5`, shorten swipe-length by half.
|
@@ -136,13 +166,50 @@ If the swipe's threshold is `0.5`, shorten swipe-length by half.
|
|
136
166
|
`interval:` is delay between swipes/pinches. Default value is 1.
|
137
167
|
If the swipe's interval is `0.5`, shorten swipe-interval by half to recognize a next swipe.
|
138
168
|
|
139
|
-
###
|
140
|
-
|
141
|
-
|
169
|
+
### Example of `threshold:` / `interval:` settings
|
170
|
+
|
171
|
+
```yaml
|
172
|
+
swipe:
|
173
|
+
3:
|
174
|
+
left:
|
175
|
+
command: 'xdotool key alt+Right' # threshold: 0.5, interval: 0.75
|
176
|
+
threshold: 0.5
|
177
|
+
right:
|
178
|
+
command: 'xdotool key alt+Left' # threshold: 0.5, interval: 0.75
|
179
|
+
threshold: 0.5
|
180
|
+
up:
|
181
|
+
command: 'xdotool key super' # threshold: 1, interval: 0.75
|
182
|
+
down:
|
183
|
+
command: 'xdotool key super' # threshold: 1, interval: 0.75
|
184
|
+
pinch:
|
185
|
+
2:
|
186
|
+
in:
|
187
|
+
command: "xdotool keydown ctrl click 4 keyup ctrl" # threshold: 0.5, interval: 0.5
|
188
|
+
out:
|
189
|
+
command: "xdotool keydown ctrl click 5 keyup ctrl" # threshold: 0.5, interval: 0.5
|
190
|
+
|
191
|
+
threshold:
|
192
|
+
pinch: 0.5
|
193
|
+
|
194
|
+
interval:
|
195
|
+
swipe: 0.75
|
196
|
+
pinch: 0.5
|
197
|
+
```
|
198
|
+
|
199
|
+
There are three priorities of `threshold:` and `interval:`.
|
200
|
+
The individual `threshold:` and `interval:` settings (under "direction") have a higher priority than the global one (under "root")
|
142
201
|
|
143
|
-
|
144
|
-
|
202
|
+
1. child elements in the direction (left/right/down/up → threshold/interval)
|
203
|
+
1. root child elements (threshold/interval → swipe/pinch)
|
204
|
+
1. default value (= 1)
|
145
205
|
|
206
|
+
### `command:` property for assigning commands
|
207
|
+
|
208
|
+
On fusuma version 0.4 `command:` property is available!
|
209
|
+
You can assign any command each gestures.
|
210
|
+
|
211
|
+
**`shortcut:` property is deprecated**, **it was removed on fusuma version 1.0**.
|
212
|
+
You need to replace to `command:` property.
|
146
213
|
|
147
214
|
```diff
|
148
215
|
swipe:
|
@@ -157,35 +224,40 @@ swipe:
|
|
157
224
|
|
158
225
|
### About xdotool
|
159
226
|
|
160
|
-
|
161
|
-
|
162
|
-
* Available keys' hint (https://github.com/jordansissel/xdotool/issues/212#issuecomment-406156157)
|
227
|
+
- xdotool manual (https://github.com/jordansissel/xdotool/blob/master/xdotool.pod)
|
228
|
+
- Available keys' hint (https://github.com/jordansissel/xdotool/issues/212#issuecomment-406156157)
|
163
229
|
|
164
230
|
**NOTE: xdotool has some issues**
|
165
231
|
|
166
|
-
|
232
|
+
- Gestures take a few seconds to react(https://github.com/iberianpig/fusuma/issues/113)
|
167
233
|
|
168
234
|
#### Alternatives to xdotool
|
169
235
|
|
170
|
-
|
171
|
-
* Emulates keyboard events
|
172
|
-
* Wayland compatible
|
236
|
+
- [fusuma-plugin-sendkey](https://github.com/iberianpig/fusuma-plugin-sendkey)
|
173
237
|
|
174
|
-
|
175
|
-
|
176
|
-
|
238
|
+
- Emulates keyboard events
|
239
|
+
- Low latency
|
240
|
+
- Wayland compatible
|
177
241
|
|
178
|
-
|
242
|
+
- `xte`
|
243
|
+
- [xte(1) - Linux man page](https://linux.die.net/man/1/xte)
|
244
|
+
- install with `sudo apt xautomation`
|
245
|
+
|
246
|
+
- [ydotool](https://github.com/ReimuNotMoe/ydotool)
|
247
|
+
- Wayland compatible
|
248
|
+
- Needs more maintainers.
|
249
|
+
- Requires only replacing `xdotool` with `ydotool` in fusuma conf.
|
179
250
|
|
180
|
-
|
181
|
-
* `-d`, `--daemon` : Daemonize process
|
182
|
-
* `-l`, `--list-devices` : List available devices
|
183
|
-
* `-v`, `--verbose` : Show details about the results of running fusuma
|
184
|
-
* `--device="Device name"` : Open the given device only (DEPRECATED)
|
185
|
-
* `--version` : Show fusuma version
|
251
|
+
## Options
|
186
252
|
|
187
|
-
|
253
|
+
- `-c`, `--config=path/to/file` : Use an alternative config file
|
254
|
+
- `-d`, `--daemon` : Daemonize process
|
255
|
+
- `-l`, `--list-devices` : List available devices
|
256
|
+
- `-v`, `--verbose` : Show details about the results of running fusuma
|
257
|
+
- `--device="Device name"` : Open the given device only (DEPRECATED)
|
258
|
+
- `--version` : Show fusuma version
|
188
259
|
|
260
|
+
### Specify touchpads by device name
|
189
261
|
Set the following options to recognize multi-touch gestures only for the specified touchpad device.
|
190
262
|
|
191
263
|
```yaml
|
@@ -193,10 +265,12 @@ plugin:
|
|
193
265
|
filters:
|
194
266
|
libinput_device_filter:
|
195
267
|
keep_device_names:
|
196
|
-
- "
|
268
|
+
- "BUILT-IN TOUCHPAD NAME"
|
269
|
+
- "EXTERNAL TOUCHPAD NAME"
|
197
270
|
```
|
198
271
|
|
199
272
|
## Autostart (gnome-session-properties)
|
273
|
+
|
200
274
|
1. Check the path where you installed fusuma with `$ which fusuma`
|
201
275
|
2. Open `$ gnome-session-properties`
|
202
276
|
3. Add Fusuma and enter the location where the above path was checked in the command input field
|
@@ -206,9 +280,9 @@ plugin:
|
|
206
280
|
|
207
281
|
Following features are provided as plugins.
|
208
282
|
|
209
|
-
|
210
|
-
|
211
|
-
|
283
|
+
- Adding new gestures or combinations
|
284
|
+
- Features for specific Linux distributions
|
285
|
+
- Setting different gestures per applications
|
212
286
|
|
213
287
|
### Installation of fusuma plugins
|
214
288
|
|
@@ -219,7 +293,7 @@ Fusuma plugins are provided with the `fusuma-plugin-XXXXX` naming convention and
|
|
219
293
|
### Available plugins
|
220
294
|
|
221
295
|
| Name | About |
|
222
|
-
|
296
|
+
| ------------------------------------------------------------------------------ | --------------------------------------------- |
|
223
297
|
| [fusuma-plugin-sendkey](https://github.com/iberianpig/fusuma-plugin-sendkey) | Emulates keyboard events |
|
224
298
|
| [fusuma-plugin-wmctrl](https://github.com/iberianpig/fusuma-plugin-wmctrl) | Manages Window and Workspace |
|
225
299
|
| [fusuma-plugin-keypress](https://github.com/iberianpig/fusuma-plugin-keypress) | Detects gestures while pressing multiple keys |
|
@@ -227,9 +301,8 @@ Fusuma plugins are provided with the `fusuma-plugin-XXXXX` naming convention and
|
|
227
301
|
|
228
302
|
## Tutorial Video
|
229
303
|
|
230
|
-
[](http://www.youtube.com/watch?v=bn11Iwvf29I "Multitouch Touchpad Gestures in Linux with Fusuma")
|
231
|
-
[Multitouch Touchpad Gestures in Linux with Fusuma](http://www.youtube.com/watch?v=bn11Iwvf29I) by [Eric Adams](https://www.youtube.com/user/igster75)
|
232
|
-
|
304
|
+
[](http://www.youtube.com/watch?v=bn11Iwvf29I "Multitouch Touchpad Gestures in Linux with Fusuma")
|
305
|
+
[Multitouch Touchpad Gestures in Linux with Fusuma](http://www.youtube.com/watch?v=bn11Iwvf29I) by [Eric Adams](https://www.youtube.com/user/igster75)
|
233
306
|
|
234
307
|
## Support
|
235
308
|
|
@@ -237,16 +310,13 @@ I'm a Freelance Engineer in Japan and working on these products after finishing
|
|
237
310
|
Currently, my open-source contribution times is not enough.
|
238
311
|
If you like my work and want to contribute and become a sponsor, I will be able to focus on my projects.
|
239
312
|
|
240
|
-
|
241
|
-
|
242
|
-
|
313
|
+
- [GitHub Sponsors](https://github.com/sponsors/iberianpig) (Zero fee!)
|
314
|
+
- [Patreon](https://www.patreon.com/iberianpig)
|
243
315
|
|
244
316
|
## Contributing
|
245
317
|
|
246
318
|
Bug reports and pull requests are welcome on GitHub at https://github.com/iberianpig/fusuma. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
247
319
|
|
248
|
-
|
249
320
|
## License
|
250
321
|
|
251
322
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
252
|
-
|