class Sapristi::Linux::MonitorManager
Constants
- MONITOR_LINE_REGEX
- OFFSET
- RESOLUTION
Public Class Methods
dimensions(work_area, monitor_info)
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 53 def self.dimensions(work_area, monitor_info) offset_x = monitor_info['offset_x'] offset_y = monitor_info['offset_y'] x_start = work_area.x y_start = work_area.y [ x_start - offset_x, y_start - offset_y, x_start + work_area.width - offset_x, y_start + work_area.height - offset_y ] end
new()
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 10 def initialize # https://ruby-gnome2.osdn.jp/hiki.cgi?Gdk%3A%3ADisplay @screen = Gdk::Screen.default end
parse_line(line)
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 36 def self.parse_line(line) matcher = line.match(MONITOR_LINE_REGEX) matcher.names.each_with_object({}) do |name, memo| value = matcher[name] memo[name] = value&.match(/^[0-9]+$/) ? value.to_i : value end end
Public Instance Methods
monitors()
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 15 def monitors list_monitors.split("\n")[1..nil] .map { |line| extract_monitor_info(line) } .each_with_object({}) { |monitor, memo| memo[monitor['name']] = monitor } rescue StandardError => e raise Error, "Error fetching monitor information: #{e}" end
monitors_work_area()
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 66 def monitors_work_area @screen.n_monitors.times.each_with_object({}) do |monitor_id, memo| memo[monitor_id] = @screen.get_monitor_workarea(monitor_id) end end
work_area(monitor_info)
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 44 def work_area(monitor_info) area = monitors_work_area[monitor_info['id']] { 'work_area' => MonitorManager.dimensions(area, monitor_info), 'work_area_width' => area.width, 'work_area_height' => area.height } end
Private Instance Methods
extract_monitor_info(line)
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 29 def extract_monitor_info(line) monitor_info = MonitorManager.parse_line line Monitor.new monitor_info.merge work_area(monitor_info) end
list_monitors()
click to toggle source
# File lib/sapristi/adapters/linux/monitor_manager.rb, line 25 def list_monitors `xrandr --listmonitors` end