Advertisement
Guest User

Turn off right monitor

a guest
Sep 6th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env ruby
  2.  
  3. require 'singleton'
  4.  
  5. class Trigger
  6.   SLEEP_TIME = 120
  7.  
  8.   def initialize
  9.     @seconds = 0
  10.   end
  11.  
  12.   def tic_tac
  13.     mouse = Mouse.instance
  14.     mouse.read
  15.     lcd = Lcd.instance
  16.     lcd.off if @seconds >= SLEEP_TIME && lcd.on?
  17.  
  18.     if mouse.x_pos > 1900
  19.       @seconds = 0
  20.       lcd.on if lcd.off? if mouse.x_delta >= -10 && mouse.x_delta <= 10 && mouse.y_delta >= -10 && mouse.y_delta <= 10
  21.     else
  22.       @seconds += 1
  23.     end
  24.   end
  25. end
  26.  
  27. class Lcd
  28.   include Singleton
  29.  
  30.   def on
  31.     return false if on?
  32.     @state = :on
  33.     `xrandr --output DVI-I-1 --auto --pos 1920x0`
  34.   end
  35.  
  36.   def off
  37.     return false if off?
  38.     @state = :off
  39.     `xrandr --output DVI-I-1 --off`
  40.   end
  41.  
  42.   def on?
  43.     state == :on
  44.   end
  45.  
  46.   def off?
  47.     state == :off
  48.   end
  49.  
  50.   private
  51.  
  52.   def state
  53.     @state = :on unless defined?(@state)
  54.     @state
  55.   end
  56. end
  57.  
  58. class Mouse
  59.   include Singleton
  60.  
  61.   def read
  62.     save_last_position
  63.     get_position
  64.     true
  65.   end
  66.  
  67.   def x_pos
  68.     @x_pos.to_i
  69.   end
  70.  
  71.   def x_delta
  72.     @last_x_pos.to_i - @x_pos.to_i
  73.   end
  74.  
  75.   def y_delta
  76.     @last_y_pos.to_i - @y_pos.to_i
  77.   end
  78.  
  79.   private
  80.  
  81.   def save_last_position
  82.     @last_x_pos = @x_pos
  83.     @last_y_pos = @y_pos
  84.   end
  85.  
  86.   def get_position
  87.     xdotool_output = `xdotool getmouselocation`.to_s
  88.     @x_pos = xdotool_output[/x:(\d+)/, 1].to_i
  89.     @y_pos = xdotool_output[/y:(\d+)/, 1].to_i
  90.   end
  91. end
  92.  
  93. trigger = Trigger.new
  94.  
  95. while true do
  96.   trigger.tic_tac
  97.   sleep 2
  98. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement