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_screenObject



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

Returns:

  • (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_lockObject



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_screenObject



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_pidsObject



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

Returns:

  • (Boolean)


31
32
33
# File 'lib/xscreen_usb_unlocker.rb', line 31

def self.xscreensaver_running?
  xscreensaver_pids.any?
end