fusuma 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +21 -11
- data/lib/fusuma.rb +5 -6
- data/lib/fusuma/plugin/buffers/gesture_buffer.rb +15 -6
- data/lib/fusuma/plugin/manager.rb +2 -11
- data/lib/fusuma/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65e85c17ee616861de23dfda299da1de324ebc4dd26aad155d6154641b81e332
|
4
|
+
data.tar.gz: f8516a7ac078ee2d600e23ebcfb2420a36a12810ded08538ee5ed178baa05283
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fac1ec6baaeb39f8e9ecd2c883b4db02cda3b2afb3f16b832ec6b5a8219dc902a0c8df68f432aa2f78b240d588f2f2734fd92e7368c7372394ab9432251ee7f7
|
7
|
+
data.tar.gz: 24d8e5d474fcbd318d2b8027110291585dfa71878f5e329b97d2e4f935edb1f37ae0a11d3d7bb330fdd2458d001f1da1e27022ea416bddaf96cb78a33a01cfe9
|
data/README.md
CHANGED
@@ -68,7 +68,7 @@ $ sudo gem update fusuma
|
|
68
68
|
|
69
69
|
## Customize Gesture Mapping
|
70
70
|
|
71
|
-
You can customize the settings for gestures to put and edit `~/.config/fusuma/config.yml`.
|
71
|
+
You can customize the settings for gestures to put and edit `~/.config/fusuma/config.yml`.
|
72
72
|
**NOTE: You will need to create the `~/.config/fusuma` directory if it doesn't exist yet.**
|
73
73
|
|
74
74
|
```bash
|
@@ -191,13 +191,23 @@ swipe:
|
|
191
191
|
|
192
192
|
### About xdotool
|
193
193
|
|
194
|
+
|
194
195
|
* xdotool manual (https://github.com/jordansissel/xdotool/blob/master/xdotool.pod)
|
195
196
|
* Available keys' hint (https://github.com/jordansissel/xdotool/issues/212#issuecomment-406156157)
|
196
197
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
**NOTE: xdotool has some issues**
|
199
|
+
|
200
|
+
* Gestures take a few seconds to react(https://github.com/iberianpig/fusuma/issues/113)
|
201
|
+
|
202
|
+
#### Alternatives to xdotool
|
203
|
+
|
204
|
+
* [fusuma-plugin-sendkey](https://github.com/iberianpig/fusuma-plugin-sendkey)
|
205
|
+
* Emulates keyboard events
|
206
|
+
* Wayland compatible
|
207
|
+
|
208
|
+
* `xte`
|
209
|
+
* [xte(1) - Linux man page](https://linux.die.net/man/1/xte)
|
210
|
+
* install with `sudo apt xautomation`
|
201
211
|
|
202
212
|
## Options
|
203
213
|
|
@@ -218,9 +228,8 @@ swipe:
|
|
218
228
|
|
219
229
|
Following features are provided as plugins.
|
220
230
|
|
221
|
-
* Experimental features
|
222
|
-
* Features for specific Linux distributions
|
223
231
|
* Adding new gestures or combinations
|
232
|
+
* Features for specific Linux distributions
|
224
233
|
* Setting different gestures per applications
|
225
234
|
|
226
235
|
### Installation of fusuma plugins
|
@@ -231,10 +240,11 @@ Fusuma plugins are provided with the `fusuma-plugin-XXXXX` naming convention and
|
|
231
240
|
|
232
241
|
### Available plugins
|
233
242
|
|
234
|
-
| Name |
|
235
|
-
|
236
|
-
| [fusuma-plugin-
|
237
|
-
| [fusuma-plugin-
|
243
|
+
| Name | About |
|
244
|
+
|--------------------------------------------------------------------------------|-----------------------------------------------|
|
245
|
+
| [fusuma-plugin-sendkey](https://github.com/iberianpig/fusuma-plugin-sendkey) | Emulates keyboard events |
|
246
|
+
| [fusuma-plugin-wmctrl](https://github.com/iberianpig/fusuma-plugin-wmctrl) | Manages Window and Workspace |
|
247
|
+
| [fusuma-plugin-keypress](https://github.com/iberianpig/fusuma-plugin-keypress) | Detects gestures while pressing multiple keys |
|
238
248
|
|
239
249
|
## Support
|
240
250
|
|
data/lib/fusuma.rb
CHANGED
@@ -31,7 +31,6 @@ module Fusuma
|
|
31
31
|
load_custom_config(option[:config_path])
|
32
32
|
|
33
33
|
Plugin::Manager.require_plugins_from_relative
|
34
|
-
Plugin::Manager.require_plugins_from_config
|
35
34
|
|
36
35
|
MultiLogger.info '---------------------------------------------'
|
37
36
|
print_version
|
@@ -87,10 +86,10 @@ module Fusuma
|
|
87
86
|
# TODO: run with multi thread
|
88
87
|
@inputs.first.run do |event|
|
89
88
|
clear_expired
|
90
|
-
filtered = filter(event)
|
91
|
-
parsed = parse(filtered)
|
92
|
-
buffered = buffer(parsed)
|
93
|
-
detected = detect(buffered)
|
89
|
+
filtered = filter(event) || next
|
90
|
+
parsed = parse(filtered) || next
|
91
|
+
buffered = buffer(parsed) || next
|
92
|
+
detected = detect(buffered) || next
|
94
93
|
merged = merge(detected)
|
95
94
|
execute(merged)
|
96
95
|
end
|
@@ -105,7 +104,7 @@ module Fusuma
|
|
105
104
|
end
|
106
105
|
|
107
106
|
def buffer(event)
|
108
|
-
@buffers.
|
107
|
+
@buffers.any? { |b| b.buffer(event) } && @buffers
|
109
108
|
end
|
110
109
|
|
111
110
|
# @param buffers [Array<Buffer>]
|
@@ -18,6 +18,7 @@ module Fusuma
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# @param event [Event]
|
21
|
+
# @return [Buffer, false]
|
21
22
|
def buffer(event)
|
22
23
|
# TODO: buffering events into buffer plugins
|
23
24
|
# - gesture event buffer
|
@@ -25,8 +26,13 @@ module Fusuma
|
|
25
26
|
# - other event buffer
|
26
27
|
return if event&.tag != source
|
27
28
|
|
28
|
-
|
29
|
-
|
29
|
+
if bufferable?(event)
|
30
|
+
@events.push(event)
|
31
|
+
self
|
32
|
+
else
|
33
|
+
clear
|
34
|
+
false
|
35
|
+
end
|
30
36
|
end
|
31
37
|
|
32
38
|
def clear_expired(current_time: Time.now)
|
@@ -77,10 +83,13 @@ module Fusuma
|
|
77
83
|
self.class.new events
|
78
84
|
end
|
79
85
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
86
|
+
def bufferable?(event)
|
87
|
+
case event.record.status
|
88
|
+
when 'begin', 'end'
|
89
|
+
false
|
90
|
+
else
|
91
|
+
true
|
92
|
+
end
|
84
93
|
end
|
85
94
|
end
|
86
95
|
end
|
@@ -11,7 +11,7 @@ module Fusuma
|
|
11
11
|
@plugin_class = plugin_class
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def require_siblings_from_plugin_dir
|
15
15
|
search_key = File.join('../../', plugin_dir_name, '*.rb')
|
16
16
|
Dir.glob(File.expand_path("#{__dir__}/#{search_key}")).sort.each do |siblings_plugin|
|
17
17
|
require siblings_plugin
|
@@ -53,7 +53,7 @@ module Fusuma
|
|
53
53
|
load_paths << plugin_path
|
54
54
|
|
55
55
|
manager = Manager.new(plugin_class)
|
56
|
-
manager.
|
56
|
+
manager.require_siblings_from_plugin_dir
|
57
57
|
manager.require_siblings_from_gems
|
58
58
|
end
|
59
59
|
|
@@ -68,15 +68,6 @@ module Fusuma
|
|
68
68
|
require_relative './executors/executor.rb'
|
69
69
|
end
|
70
70
|
|
71
|
-
def require_plugins_from_config
|
72
|
-
local_plugin_paths = Config.search(Config::Index.new('local_plugin_paths'))
|
73
|
-
return unless local_plugin_paths
|
74
|
-
|
75
|
-
Array.new(local_plugin_paths).each do |plugin_path|
|
76
|
-
require plugin_path
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
71
|
def plugins
|
81
72
|
@plugins ||= {}
|
82
73
|
end
|
data/lib/fusuma/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusuma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -228,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
|
-
rubygems_version: 3.0.
|
231
|
+
rubygems_version: 3.0.3
|
232
232
|
signing_key:
|
233
233
|
specification_version: 4
|
234
234
|
summary: Multitouch gestures with libinput dirver on X11, Linux
|