conquer-dzen 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8933fbe7d81968698b0cb03f96d6779097065e4
4
- data.tar.gz: a8c7295a89adc78506ba843bd7ac475eea5608bc
3
+ metadata.gz: 0e78581b0223c20b705c7fc522b81781d1850677
4
+ data.tar.gz: 6db26158a7cf9aeee8644bf81d8dc70fc3b4acf7
5
5
  SHA512:
6
- metadata.gz: 8a44a9d97917ea92e17a7c70f14184b044b2c87fded2dc2cba533d337f617f809307bba3a67d917c9d2738d6d5d4eb3674e45e92d4c538389d22560286acca6c
7
- data.tar.gz: 5460a13f78768047598162adecd396213517167958d9c2f7c1bfbe25473ef23a9dcc5ae31ca2eeb75598e409306b1bb54bbd18cb73a055f8dc1e687b2f1762ed
6
+ metadata.gz: a53f3df751e5ec2bb3d3ccb31c9396f8b1b27ee7e33ab8d15646c9b46ee7c958dc1a8ead65f971abbf557f3095357f8201845c2f1da5ac142fa448ae4dedcc1d
7
+ data.tar.gz: f88fa0b2dd9a82e956922ee2747e725ef3741cf80c5ab8f72c2bac532769b65457915d7336709bb06944ede49b386e4a3709e952fb20c3436a608c4e9fbaf8eb
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /vendor/
data/lib/conquer/dzen.rb CHANGED
@@ -3,11 +3,13 @@ require 'conquer/dzen/version'
3
3
  require 'conquer/dzen/color'
4
4
  require 'conquer/dzen/graphics'
5
5
  require 'conquer/dzen/positioning'
6
+ require 'conquer/dzen/interaction'
6
7
 
7
8
  module Conquer
8
9
  module Helpers
9
10
  extend Dzen::Color
10
11
  extend Dzen::Graphics
11
12
  extend Dzen::Positioning
13
+ extend Dzen::Interaction
12
14
  end
13
15
  end
@@ -0,0 +1,23 @@
1
+ require 'conquer/dzen/interaction/callback_listener'
2
+ require 'conquer/dzen/interaction/tooltip_listener'
3
+
4
+ module Conquer
5
+ module Dzen
6
+ module Interaction
7
+ def show_tooltip(*args)
8
+ Celluloid.publish('tooltip', *args)
9
+ end
10
+
11
+ def button(button, callback, *args)
12
+ rpc_call = { method: :event, params: ['button', callback, *args] }
13
+ command = "echo -n '#{rpc_call.to_json}' | socat stdin '#{RPC_SOCKET}'"
14
+ "^ca(#{button}, #{command})#{yield}^ca()"
15
+ end
16
+
17
+ Conquer.on_startup do
18
+ CallbackListener.supervise
19
+ TooltipListener.supervise
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ require 'celluloid/current'
2
+
3
+ module Conquer
4
+ module Dzen
5
+ module Interaction
6
+ class CallbackListener
7
+ include Celluloid
8
+ include Celluloid::Notifications
9
+
10
+ def initialize
11
+ subscribe('button', :run_callback)
12
+ end
13
+
14
+ def run_callback(_, callback, *args)
15
+ Celluloid::Future.new do
16
+ Helpers.send(callback, *args)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,38 @@
1
+ require 'celluloid/current'
2
+
3
+ module Conquer
4
+ module Dzen
5
+ module Interaction
6
+ class TooltipListener
7
+ include Celluloid
8
+ include Celluloid::Notifications
9
+
10
+ def initialize
11
+ @current_tooltip = nil
12
+ subscribe('tooltip', :show_tooltip)
13
+ end
14
+
15
+ def show_tooltip(_, title, text, width = 150)
16
+ Process.kill('TERM', @current_tooltip) if @current_tooltip
17
+
18
+ lines = text.lines.size
19
+ mouse = `xdotool getmouselocation`.match(
20
+ /^x:(?<x>\d+) y:(?<y>\d+) screen:(?<screen>\d+)/
21
+ )
22
+ dzen_command = [
23
+ 'dzen2', '-x', mouse[:x], '-y', mouse[:y], '-l', lines.to_s,
24
+ '-w', width.to_s, '-e', 'onstart=uncollapse;button1=exit',
25
+ '-xs', mouse[:screen]
26
+ ]
27
+ pipe = ::IO.popen(dzen_command, 'w+')
28
+ @current_tooltip = pipe.pid
29
+
30
+ pipe.puts title
31
+ pipe.puts text
32
+ pipe.flush
33
+ pipe.pid
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,6 +1,14 @@
1
1
  module Conquer
2
2
  module Dzen
3
3
  module Positioning
4
+ def ignore_bg(state = :on)
5
+ if block_given?
6
+ "^ib(1)#{yield}^ib(0)"
7
+ else
8
+ "^ib(#{state == :on ? 0 : 1})"
9
+ end
10
+ end
11
+
4
12
  def lock_x(options = {})
5
13
  if block_given?
6
14
  "#{'^ib(1)' if options[:ignore_bg]}" \
@@ -15,8 +23,8 @@ module Conquer
15
23
  '^p(_UNLOCK_X)'
16
24
  end
17
25
 
18
- def shift(x, y)
19
- return "#{shift(x, y)}#{yield}#{shift(-x, -y)}" if block_given?
26
+ def shift(x, y = 0)
27
+ return "#{shift(x, y)}#{yield}#{shift(-x)}^p()" if block_given?
20
28
  x = x.round
21
29
  y = y.round
22
30
  x = nil if x == 0
@@ -1,5 +1,5 @@
1
1
  module Conquer
2
2
  module Dzen
3
- VERSION = "0.1.0"
3
+ VERSION = '0.1.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conquer-dzen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joakim Reinert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-04 00:00:00.000000000 Z
11
+ date: 2016-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,6 +93,9 @@ files:
93
93
  - lib/conquer/dzen/graphics/progress_bar.rb
94
94
  - lib/conquer/dzen/graphics/rectangle.rb
95
95
  - lib/conquer/dzen/graphics/rectangle_outline.rb
96
+ - lib/conquer/dzen/interaction.rb
97
+ - lib/conquer/dzen/interaction/callback_listener.rb
98
+ - lib/conquer/dzen/interaction/tooltip_listener.rb
96
99
  - lib/conquer/dzen/positioning.rb
97
100
  - lib/conquer/dzen/version.rb
98
101
  homepage: https://github.com/jreinert/conquer-dzen