fidget 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce823012d9505a1ffb01dc781c1481df5e507532
4
- data.tar.gz: d328d92527cbeba4a359a0a270c8cb9d0de36c09
3
+ metadata.gz: 053aecb8ac134a93352ee94ad74e2b5d53391157
4
+ data.tar.gz: a03308997ca134b329f148f477865d630b336efb
5
5
  SHA512:
6
- metadata.gz: 63bad66d8091d5a84099ae4b64e8d8bc230da6f4ca852bc7b7f6bca9d7184cc1fdadf9216404e1d22cc7fb31c59f58bb6e99ee64c5605ef72bb89779fffe0621
7
- data.tar.gz: 941ff8d08cffa1cc6792f0a74b4808c5ea969271213936369e486c74f5cb1d3f30bc6534f76ebffabe0b0314801434775742f5928dd427711f0b1c7a8c75c7f5
6
+ metadata.gz: e891bb9f07dab6e7c6406cb1693cc59c84cf3ad3fce0f02741010af879d88e63cb9c982190ac418e53afa5fc63e981de9ed59d5d33ee97ed999ec053aaf76349
7
+ data.tar.gz: 75076bdb11679fe0e55c2df30e62a03ef218d64e841923e2569113e5b7c7c795728f86eee6bdb96e6661f24eff86ea61674226a7aac82779a007ee8bb0af6d1d
data/README.md CHANGED
@@ -20,6 +20,7 @@ Additional OS X options:
20
20
  Additional Windows options:
21
21
 
22
22
  * `away` enables a low-power, but not sleeping, mode on Windows.
23
+ * `simulate` will simulate a user keyboard action every few seconds.
23
24
 
24
25
  Additional Linux options:
25
26
 
@@ -1,4 +1,6 @@
1
1
  class Fidget::Platform
2
+ require "dbus"
3
+
2
4
  def self.current_process(options)
3
5
  options = munge(options)
4
6
  suspend(options)
@@ -35,7 +37,7 @@ class Fidget::Platform
35
37
  end
36
38
  options
37
39
  end
38
- #private_class_method :munge
40
+ private_class_method :munge
39
41
 
40
42
  def self.root_win
41
43
  ids = `xwininfo -root`.each_line.collect do |line|
@@ -45,12 +47,25 @@ class Fidget::Platform
45
47
  raise "Parsing xwininfo failed" unless ids.size == 1
46
48
  ids.first
47
49
  end
48
- #private_class_method :root_win
50
+ private_class_method :root_win
49
51
 
50
52
  def self.suspend(options)
51
53
  if options.include? :display
54
+ # I'm sure that if we tried, we could find yet another way to do this
52
55
  system("xdg-screensaver suspend #{root_win}")
56
+ system('xset s off')
57
+ system('xset s noblank')
53
58
  system('xset -dpms')
59
+
60
+ # xdg-screensaver doesn't actually seem to work, but making DBus calls ourself does.
61
+ # This is possibly because the inhibit expires when the dbus-session command terminates
62
+ # I don't know if this will work in other distros though. Yay for consistency. *\o/*
63
+ begin
64
+ dbus_screensaver.Inhibit(root_win, 'Administratively disabled')
65
+ rescue => e
66
+ STDERR.puts 'Fidget: DBus action failed.'
67
+ STDERR.puts e.backtrace.join "\n"
68
+ end
54
69
  end
55
70
 
56
71
  if options.include? :blanking
@@ -63,7 +78,11 @@ class Fidget::Platform
63
78
  def self.resume(options)
64
79
  if options.include? :display
65
80
  system("xdg-screensaver resume #{root_win}")
66
- system('xset dpms')
81
+ system('xset +dpms')
82
+ system('xset s on')
83
+
84
+ # if we have a cookie, we can trust that DBus works
85
+ dbus_screensaver.Uninhibit(@@cookie) if @@cookie
67
86
  end
68
87
 
69
88
  if options.include? :blanking
@@ -72,4 +91,13 @@ class Fidget::Platform
72
91
  end
73
92
  private_class_method :resume
74
93
 
94
+ def self.dbus_screensaver
95
+ session = DBus.session_bus
96
+ service = session['org.freedesktop.ScreenSaver']
97
+ object = service['/ScreenSaver']
98
+ object.introspect
99
+ object['org.freedesktop.ScreenSaver']
100
+ end
101
+ private_class_method :dbus_screensaver
102
+
75
103
  end
@@ -40,7 +40,7 @@ class Fidget::Platform
40
40
  options.flatten!
41
41
  options.compact!
42
42
  options = [:display, :sleep] if options.empty?
43
- options = [:display, :sleep, :away] if options == [:all]
43
+ options = [:display, :sleep, :simulate, :away] if options == [:all]
44
44
 
45
45
  terms = {
46
46
  :display => ES_DISPLAY_REQUIRED,
@@ -57,7 +57,7 @@ class Fidget::Platform
57
57
  state = Win32API.new('kernel32','SetThreadExecutionState','L')
58
58
  state.call(ES_CONTINUOUS|mode)
59
59
 
60
- if options.include? :display
60
+ if options.include? :simulate
61
61
  @@kb_poker = Thread.new do
62
62
  kb = Win32API.new('user32.dll', 'keybd_event', 'nnnn', 'v')
63
63
  loop do
@@ -1,3 +1,3 @@
1
1
  class Fidget
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fidget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2017-01-08 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby-dbus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: |2
14
28
  Fidget was inspired by the OS X commandline `caffeinate` tool, which in turn
15
29
  was inspired by the Caffeine menubar tool. However, this tool is cross platform