fusuma 1.5.0 → 1.6.0
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/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
|