Module: XscreenUsbUnlocker
- Defined in:
- lib/xscreen_usb_unlocker/app.rb,
lib/xscreen_usb_unlocker.rb,
lib/xscreen_usb_unlocker/log.rb,
lib/xscreen_usb_unlocker/config.rb,
lib/xscreen_usb_unlocker/version.rb,
lib/xscreen_usb_unlocker/optparser.rb
Overview
Some requires, they don’t fit elsewhere.
Defined Under Namespace
Classes: Application, ConfigBlob, Logger, OptionParser
Constant Summary
collapse
- App =
Application.new
- Log =
Logger.new
- Config =
ConfigBlob.new
- VERSION =
"0.91.0"
- Options =
OptionParser.new
Class Method Summary
collapse
Class Method Details
.lock_screen ⇒ Object
13
14
15
16
17
18
|
# File 'lib/xscreen_usb_unlocker.rb', line 13
def self.lock_screen
Log.info 'locking'
p = spawn "xscreensaver -no-splash"
Process.detach p
%x[xscreensaver-command -lock]
end
|
.plugged_in? ⇒ Boolean
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/xscreen_usb_unlocker.rb', line 39
def self.plugged_in?
usb = LIBUSB::Context.new
options_hash = {}
if Options[:device]
v, p = Options[:device].split(":")
options_hash[:idVendor] = v.hex if v && !v.empty?
options_hash[:idProduct] = p.hex if p && !p.empty?
end
devices = usb.devices(options_hash)
return true if devices.select { |d| d.serial_number == Options[:serial]}.any?
false
end
|
.toggle_lock ⇒ Object
54
55
56
57
58
59
60
61
62
|
# File 'lib/xscreen_usb_unlocker.rb', line 54
def self.toggle_lock
if plugged_in?
Log.info 'unlock requested'
unlock_screen
else
Log.info 'lock request'
lock_screen
end
end
|
.unlock_screen ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/xscreen_usb_unlocker.rb', line 20
def self.unlock_screen
Log.info 'unlocking'
if xscreensaver_pids
xscreensaver_pids.each do |p|
Log.info "Appears to be pid: #{p.pid}"
Process.kill "QUIT", p.pid
end
end
end
|
.xscreensaver_pids ⇒ Object
35
36
37
|
# File 'lib/xscreen_usb_unlocker.rb', line 35
def self.xscreensaver_pids
Sys::ProcTable.ps.select{|x| x.cmdline.include?("xscreensaver") && !x.cmdline.include?("ruby")}
end
|
.xscreensaver_running? ⇒ Boolean
31
32
33
|
# File 'lib/xscreen_usb_unlocker.rb', line 31
def self.xscreensaver_running?
xscreensaver_pids.any?
end
|